- ベストアンサー
ドキュメントルートより上のディレクトリにあるPHPファイルをインクルードするには?
外部に公開する必要がないディレクトリをドキュメントルートの外に置く構成のPHPプログラムを使用したいのですが、ドキュメントルートより上のディレクトリのPHPファイルをインクルードするにはどうすればよいのでしょうか? 例えば、DocumentoRootが/var/www/htmlで、 /var/www/html/test.phpから/var/www/data/include.phpをインクルードするようなケースです。 include.phpをtest.phpと同じディレクトリ(/var/www/html/)に置いた場合はインクルードできることを確認しています。 パーミッションは設定してあります。 phpinfo()でinclude_pathは「.:」となっています。 http.conf、php.ini等も編集することができる環境です。 ご存知の方がいらっしゃいましたら、アドバイスをお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No1さんの回答の通りに相対的な指定をするのもありですが、php.iniを編集出来るならinclude_pathを指定した方が良いです。 include_pathに追加すればディレクトリ階層やPHPの配置に影響されずにインクルード出来るので多くのPHPからインクルードされるならこちらの方が便利でしょう。 include_path=".:/var/www/data" にして include('include.php'); でインクルード出来るはずです。
その他の回答 (1)
include '../data/include.php'; あたりでできるのではないでしょうか。
お礼
ご回答ありがとうございます。 説明不足で申し訳ありません。 test.phpご指摘いただいた内容に変更してあります。 また、相対パス指定、絶対パス指定ともに試しましたが、同じ結果でした。
お礼
ご回答ありがとうございます。 入れ違いになってしまいましたが、原因が判明しました。 http.confでopen_basedirという項目があるのですが、この値がドキュメントルートのみになっていました。 open_basedirにドキュメントルートの1つ上のdataディレクトリを指定するとインクルードできるようになりました。 なお、open_basedirはphp.iniでも設定できるようです。 アドバイスいただき、ありがとうございました。