方法1: 公式マニュアルによると、PHPチュートリアルのセーフモード関連の設定が厳しすぎると、実際にはファイルが存在するにもかかわらず、ファイルが存在すると誤って報告されるという状況が発生します。存在しない。
サーバー側で php.ini を制御できず、ini_set() を使用するときにセーフ モードをオフにすることもできないため、次善の手段に頼って、より信頼性が高く安全な検出方法を見つけて、ファイルは存在します。これは、$_server['document_root'] の助けを借りて実現できます。 $_server['document_root'] は、Web サイトのルート ディレクトリを返します。ディレクトリの最後のサブディレクトリには、次のようにディレクトリ記号「/」が含まれません。
d:/www/htdocs
ルート ディレクトリに、検出する必要があるファイルのパスで絶対パスを取得すると、PHP は file_exists() 関数を使用してそれを検出できます。変更する必要があるのは、上記のコードの最初の行だけです (config.php の前に記号「/」を追加していることに注意してください):
$file=$_server['document_root']."/config.php";このように、コードの実行は非常に信頼性が高く、予期しない結果は発生しません。
上記の方法は、セキュリティで保護されたディレクトリまたはファイルが存在するかどうかを検出できる、ディレクトリ (is_dir()) またはファイル (is_file()) の関連検出関数にも適用できます。
最後に、ちなみに、PHP の特別な設定によって保護されたファイルを参照する (インクルードおよび要求する) 場合は、$_server['document_root'] パスを追加する必要はありません。PHP ドキュメントによると、ファイルは次のようにすることが許可されているためです。参照しました。
方法 2: 私の場合、ファイルは Windows と Linux の間で行き来しました。その結果、Linux 上のファイルやディレクトリのアクセス権限が変更され、ファイルの所有者以外はアクセス権限を持たなくなります。 chmod -r 755 xxx/* を使用すると問題が解決しました。
http://www.bkjia.com/PHPjc/327906.html