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