自作ヘッダ('header.php')をセキュリティの関係上、Webブラウザからアクセスできないディレクトリ('/var/www/libs')で管理したいのですが、次の実行処理で自作ヘッダの読み込み失敗エラーが発生します。
●php.ini設定(Apache再起動とphpinfoで設定反映を確認済み)
include_path = ".:/var/www/html/PEAR;/var/www/libs"
allow_url_fopen = On
●実行プログラム(test.php)
require_once 'header.php';
<以下略>
●実行結果
PHP Warning: require_once(header.php): failed to open stream: No such file or directory in /var/www/html/test.php on line 2
PHP Fatal error: require_once(): Failed opening required 'header.php' (include_path='.:/var/www/html/PEAR;/var/www/libs') in /var/www/html/test.php on line 2
サーバ側で参照権限が制限されている可能性を考え、Webブラウザで閲覧できるディレクトリ配下にheader.phpを持ってきて、php.iniのinclude_pathもそのように変更したのですが、同様のエラーが発生しました。
なお、実行ファイルを次のように絶対パスで指定すると、エラーは発生せず正常に動作します。
●実行プログラム(正常動作)
require_once '/var/www/libs/header.php';
どのような問題が考えられるか、ご教授のほどよろしくお願いいたします。
include_path = ".:/var/www/html/PEAR;/var/www/libs"
PHP: コア php.ini ディレクティブに関する説明 - Manual
セパレーターが混在してる。
UNIXでは コロンで、Windowsではセミコロンで区切ったディレクトリのリスト で指定します。
allow_url_fopen = On
これは必要ない。セキュリティ上問題が多いので Off にすべき。
include_path = ".:/var/www/html/PEAR;/var/www/libs"
パスのセパレータは";"(セミコロン)ではなく、":"(コロン)ではないでしょうか。
サーバによって違いますが、混在しているのがまずいのでは…
以下のように変更すれば直るかもしれません。
include_path = ".:/var/www/html/PEAR:/var/www/libs"
ご回答いただきありがとうございました。
とんでもない勘違いをしていました。
コロンにして正常動作を確認しました。
ありがとうございました!!
Linuxをご利用だと思いますが、include_pathのパスの区切り文字が間違っています。
セミコロンではなく、コロンを使ってください。
include_path = ".:/var/www/html/PEAR:/var/www/libs"
ご回答いただきありがとうございました。
おっしゃるとおり、UNIXを利用しております。
書いてはいませんでしたが、ローカルのテスト環境はWindowsでしたので、思いっきり勘違いしておりました。
コロンにしてちゃんと正常動作することを確認しました。
ありがとうございました!!
include_path = ".:/var/www/html/PEAR;/var/www/libs"
PHP: コア php.ini ディレクティブに関する説明 - Manual
セパレーターが混在してる。
UNIXでは コロンで、Windowsではセミコロンで区切ったディレクトリのリスト で指定します。
allow_url_fopen = On
これは必要ない。セキュリティ上問題が多いので Off にすべき。
ご回答いただきありがとうございました。
先のとおり勘違いしておりました^^
ちなみに、b-wind様がおっしゃるようにallow_url_fopenはOFFが適切だと思いますので、そのように変更したで後も正常動作を確認することができました。
問題が解決しましたので、これで質問をcloseさせていただきます。
みなさま、ありがとうございました!!
ご回答いただきありがとうございました。
先のとおり勘違いしておりました^^
ちなみに、b-wind様がおっしゃるようにallow_url_fopenはOFFが適切だと思いますので、そのように変更したで後も正常動作を確認することができました。
問題が解決しましたので、これで質問をcloseさせていただきます。
みなさま、ありがとうございました!!