| 44件目(121件中) |

1.2betaでrealpath()のエラー

固定リンク:#0000000080   投稿者:ZiSTA 日時:2008-01-16 10:19:38   コメント( 0

1.2betaにしたところ以下のエラーが表示された。
""
warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 10xxx is not allowed to access /usr/local/lib/php owned by uid 0 in /virtual/username_xxx/cake_1.2/cake/libs/configure.php on line 458
""


PHPがセーフモードで動いているサーバー(Xreaとか)ではrealpathという関数を使えないのかと疑った。realpath関数自体はセーフモードでも使えるが、自分の管轄外のディレクトリに対して使用すると、使えないようです。


どうやら1.2betaではPHPのinclude_pathで設定してあるディレクトリにもCakePHP関連ファイルを読み込めるようにパスを管理しています。そのスクリプトはconfigure.phpです。include_pathには、「/usr/local/lib/php」が含まれていて、セーフモードではその「/usr/local/lib/php」に対してrealpathが使えないというエラーが上記のエラーです。


対策としては、configure.phpのパス管理の部分で「/usr/local/lib/php」に対してrealpathを使わないようにスクリプト変更する。


変更前
""
if ( $path == '.' || in_array(realpath($path), $used)) {
""


変更後
""
if ( in_array($path,array('.','/usr/local/lib/php')) || in_array(realpath($path), $used)) {
""


あるいは変更前の行の直前に以下を加えるとか。
""
if ( $path=='/usr/local/lib/php') continue;

""

 

コメント

| 44件目(121件中) |
↑ ページトップ