PHP チート file_exists についてのその他の話、file_exists についてのその他の話
はじめに
問題を見つけたので、今日はそれを共有します。プロセス全体を説明しましょう。
質問
会社には、smarty に基づいて書かれたフレームワークがあり、私は PHP のアップグレードを担当しています。保守スタッフが新しい環境をデプロイした後、テスターが頻繁にエラー (エラー: ファイルが見つかりません) を報告してくれました。
コードを追跡したところ、smarty によって報告されたエラーであることが判明しました。

エラー: ここで報告されたファイルは存在しません。
思考プロセス:
1. 当初はプログラム内にファイルが存在しないと思っていたのですが、実際にはファイルが存在していたことが分かりました。
2. その後、PHP カーネルに問題があるのではないかと考え、関連する PHP カーネル ファイルを調べましたが、問題はありませんでした。その結果、私はプロジェクトマネージャーにすべてのプロセスを話しました。 ——問題は解決していないので、このままにしておきます。現時点ではアップグレードが遅れています。
今日もこの問題を発見しました。最初に感じたのは、PHP のバージョンがアップグレードされていないことがわかりました。 ——その後、ディレクトリ全体を 777 に設定しましたが、すべて問題ありませんでした (chmod 777 -R ディレクトリ)。 file_exists()メソッドの問題なのでしょうか。
そこで、関連するデバッグと実験を行いました。

デバッグプロセス
コードのデバッグ:

ディレクトリ:

各権限を確認してください。test には www に対する権限がありませんが、実行ファイル Index.php には読み取りおよび書き込みの実行権限があり、含まれているファイル test.txt には読み取りおよび書き込みの権限があります。


実行結果:


ディレクトリの実行権限は file_exists() に影響します
1. テストに最大の権限を与えます - 755



成功したということは、file_exists()関数がディレクトリ権限によって制限されていることを意味します。
それでは、どのような種類のディレクトリ権限が file_exists() に影響を与えるのでしょうか?
いくつか実験してみました:
リーリー
ファイルパスを相対パスに変更しても、同じ結果が得られます。


要約する
PHP マニュアルには、file_exists がディレクトリの実行権限の影響を受けるという記述はありません。今日は、この記事を通じて、同様にこの問題を抱えている開発者に情報を伝えたいと思います。これは警告として受け取ってください。
追加情報
皆さんのコメントはとても役に立ちます、ありがとうございます。皆さんのご意見を参考に改めてマニュアルを確認してみたところ、確かにディレクトリに実行権限がないと、php-fpmアプリケーションプロセスはこのディレクトリ内にファイルを検索することはできません(実際にはファイルが存在しないものとみなされます)。実行可能ディレクトリが存在しないものとみなされます)。
実行権限を中心にマニュアルの内容を合わせて検討していただけます。ここでは、読み取りおよび書き込み権限について詳しくは説明しません (一般に、これらは簡単に理解できます)。

マニュアルには、ディレクトリの実行権限について明確な指示が記載されていることは明らかです。ディレクトリに対する実行権限とは、検索される権限を持っていることを意味します。

推薦する
この記事が役に立った場合、またはこの種の問題の解決に役立つ場合は、記事を書くモチベーションを高めるためにお勧めしてください。
http://www.bkjia.com/PHPjc/1116380.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1116380.html技術記事 file_exists の不正行為についての PHP チャット、file_exists の紹介についてのチャット 問題を見つけたので、今日それを共有します。プロセス全体を説明しましょう。質問: 会社にはスマートに基づいたフレームワークがあります...