includeやrequireが利用できない!!


と困った事がありませんか?


設定にもよりますが、PHPはエラーメッセージが表示されなかったりします。


その場合は基本アクセスログと同階層にあるエラーログ(error_logというファイル名)に出力されている事が主です。

(もちろんphp.iniの設定によっては別の箇所に吐き出されていたり、画面に出力されたりします。)


少し話がそれましたが、requireができなかったというこで、早速エラーログをみてみましょう。

(画面にでてれば楽ですが、でていない人は)


-- error_log --------

[client [IP_ADDR]] PHP Warning: main(): open_basedir restriction in effect. File([requireするファイルパス]) is not within the allowed path(s): ([どこかで設定されていそうなパス]) in [実際に実行しているファイルパス] on line 2
[client [IP_ADDR]] PHP Warning: main[requireするファイルパス]): failed to open stream: Operation not permitted in [実際に実行しているファイルパス] on line 2
[client [IP_ADDR]] PHP Fatal error: main(): Failed opening required '[requireするファイルパス]' (include_path='.:') in [実際に実行しているファイルパス] on line 2
---------------


こんなエラーが出た場合はphp.iniの設定によりファイルの読み込みが制限されているエラーです。


php.ini内のopen_basedirが設定されている場合に制限されます。


以下、記載方法

open_baseidr [制限パス]


これを解除するには次のように変更します。

open_basedir none


ちなみに、httpd.conf or .htaccess内での変更方法の場合

php_admin_value open_basedir none


以上で設定は完了です。


修正後即反映されない設定の方はWEBサーバの再起動を行って、もう一度検証を行ってみてください。


エラーが出力されなくなるはずです。