ホームページ  >  記事  >  バックエンド開発  >  LinuxでPHPがルートディレクトリの上位ディレクトリにあるファイルにアクセスできない問題の解決方法

LinuxでPHPがルートディレクトリの上位ディレクトリにあるファイルにアクセスできない問題の解決方法

WBOY
WBOYオリジナル
2016-06-20 13:03:274580ブラウズ

Linux システムにランプがインストールされている Web サイトを実行すると、www.xxx.com/index.php の include() 呼び出しはルート ディレクトリの上位レベルにある PHP ファイルを参照できず、参照できるのはルートディレクトリにあるPHPファイルを参照します。
もともとWindowsシステムは正常に動作していましたが、Linuxに切り替えた後、このような問題が発生しました。これはLinuxのシステム設定の問題ですか、それともNginxの設定の問題ですか?

その理由は次のとおりです:

php_admin_value open_basedir /usr/www/web1:/tmp:/proc


apacheやnginxではphp_admin_valueの値が設定されており、セキュリティディレクトリは特定のディレクトリに設定されているため、ルートディレクトリの1つ上のファイルにはアクセスできません。 php_admin_value open_basedir の値を、ファイルがアクセスできるディレクトリに設定するだけです

Open_basedir の使用法の概要:

open_basedir の影響範囲は、セキュリティ保護をある程度強化する fopen、require、include などの関数です。

ただし、open_basedir にも制限があります。exec や system などのシステム コマンドを実行する関数には影響しません。ホスト上の別のクラスメートのファイル (コンテンツ) を盗みたい場合は、必ずしも require include を使用する必要はありません。ここに来るか、ハックを仕掛けるか、直接 system('cat /path/to/file') する方が簡単ではないでしょうか?

システム関数は正当な目的で使用される場合があります。これを直接無効にするのは得策ではありません。これはユーザー自身の $HOME です。open_basedir についてはどうでしょうか。 、 exec 、 dl を無効にする必要はありません。これが安全性と利便性の最良の組み合わせだと思います。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。