file_exists()
Linux サーバーの PHP 関数で奇妙な問題が発生しています。
画像を編集する前に file_exists を使用して画像がサーバー上にあるかどうかを確認すると、明らかな理由もなく失敗することがあります。ファイル パスは絶対パスであり、指定されたパスで 100% であることを ssh で確認しました。
file_exists() に失敗した画像は引き続きブラウザーに表示されます。var_dump(file_exists('/home/user/path/image.jpg'));
コードは基本的に false を返しますが、違いはありません。
ファイルのアクセス許可/所有権は、すべてのイメージと親ディレクトリでまったく同じです。セーフモードはオフです。PHP エラーはありません。私は今困惑しており、何を探すべきかわかりません。
サーバー上の画像は次のとおりです。
/home/user/public_html/images/location/1.jpg -- will work
/home/user/public_html/images/location2/1.jpg -- won't work
/home/user/public_html/images/location2/2.jpg -- will work
私はサーバーへのルート アクセス権を持っているので、アイデアがあれば喜んで試してみます。
事前にアドバイスをいただきありがとうございます。追加情報が必要な場合はお知らせください。
編集: 以下のコメントの質問に答える。
- はい、画像はあります。間違いなくキャッシュではありません。
- セーフ モードはオフです (これについては、投稿で既に説明しました)。
- パスはシンボリック リンクではなく、サーバー上のファイルの場所への直接リンクです。
- フェニックス、一貫しています。作業ファイルは常に機能し、その逆も同様です。名前は1.jpg、1.thumb.jpgなどなので変な文字やスペースでも問題ありません。
[root@server ~]# ls -l /home/user/public_html/images/Hawkhurst/
total 92
-rwxr-xr-x 1 user user 24501 Aug 11 2009 1.jpg
-rwxr-xr-x 1 user user 1672 Aug 11 2009 1.thumb.jpg
-rwxr-xr-x 1 user user 14983 Aug 11 2009 2.jpg
-rwxr-xr-x 1 user user 1370 Aug 11 2009 2.thumb.jpg
-rwxr-xr-x 1 user user 17238 Aug 11 2009 3.jpg
-rwxr-xr-x 1 user user 1453 Aug 11 2009 3.thumb.jpg
-rwxr-xr-x 1 user user 14168 Aug 11 2009 4.jpg
-rwxr-xr-x 1 user user 1464 Aug 11 2009 4.thumb.jpg
[root@server ~]#
777 と 755 の権限で試してみましたが、違いはありません。たとえば、このフォルダでは、1 と 2 は機能する可能性がありますが、3 と 4 は機能しません...
私は簡単なテストを実行して、apache/php が何として実行され、nobody として実行されるかを確認しましたが、これでは、まったく同じ権限で一部の画像が機能し、一部の画像が機能しない理由を説明できません。
編集 2:問題が解決しました。データベースから呼び出されたファイル名の末尾にスペースが含まれているものもありました...元のスクリプトを作成した人は、保存する前に何らかのクリーンアップを実行しませんでした。