• ベストアンサー

ドキュメントルートより上のディレクトリにある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等も編集することができる環境です。 ご存知の方がいらっしゃいましたら、アドバイスをお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

No1さんの回答の通りに相対的な指定をするのもありですが、php.iniを編集出来るならinclude_pathを指定した方が良いです。 include_pathに追加すればディレクトリ階層やPHPの配置に影響されずにインクルード出来るので多くのPHPからインクルードされるならこちらの方が便利でしょう。 include_path=".:/var/www/data" にして include('include.php'); でインクルード出来るはずです。

kinmojr
質問者

お礼

ご回答ありがとうございます。 入れ違いになってしまいましたが、原因が判明しました。 http.confでopen_basedirという項目があるのですが、この値がドキュメントルートのみになっていました。 open_basedirにドキュメントルートの1つ上のdataディレクトリを指定するとインクルードできるようになりました。 なお、open_basedirはphp.iniでも設定できるようです。 アドバイスいただき、ありがとうございました。

その他の回答 (1)

noname#26650
noname#26650
回答No.1

include '../data/include.php'; あたりでできるのではないでしょうか。

kinmojr
質問者

お礼

ご回答ありがとうございます。 説明不足で申し訳ありません。 test.phpご指摘いただいた内容に変更してあります。 また、相対パス指定、絶対パス指定ともに試しましたが、同じ結果でした。

関連するQ&A