特定のディレクトリに保存されている写真からExifデータを抽出し、exif情報を含む画像をWebページに表示するスクリプトがあります。
以下は、exif データを取得するスクリプトの一部です。この例は、ハードコードされた画像です。
$Image = 'original/raleighbike.JPG';
echo "$Image";
$exif = exif_read_data($Image, 0, true);
これは機能し、exif データが表示されます。(「エコー」は、次の部分で取得するために正しい画像がセットアップされていることを確認するためのものです-これは私が問題を抱えているところです。)
同じスクリプトを使用して、以前のスクリプトでアップロードされ、同じディレクトリに保存された画像から exif を取得します。アップロード スクリプトは、画像の名前と場所を含む変数 ($Image9) を設定し、exif 抽出スクリプトは次のようになります。
$Image = $Image9;
echo "$Image";
$exif = exif_read_data($Image, 0, true);
私が抱えている問題は、「エコー」が正しい画像名と場所を出力するが、exif データが空で、エラー ログが次のように表示されることです。
[02-Apr-2013 18:45:29 America/Chicago] PHP Warning: exif_read_data() [<a href='function.exif-read-data'>function.exif-read-data</a>]: Unable to open file in /home2/webi8726/public_html/domain.com/sqlsidebar/displayexif.php on line 23
行 23 は、上記の引用セクションの最後の行です。
ハードコードされた画像が問題なく開かれる理由がわかりませんが、変数によって識別される画像を開くことができません-変数に正しい情報が含まれており、ハードコードされた同じファイルを指しているにもかかわらず。
問題が発生している理由を誰でも提案できますか。
OK-今日はもう少し遊んで、これが私が見つけたものです。
1 - jpg をアップロードして保存するスクリプトで、設定する変数を $photo に変更しました。$photo には、jpg の名前と保存先のディレクトリが含まれている必要があります。また、アップロード スクリプトによって作成および保存される jpg のサムネイルの名前と場所を含む $thumb という別の変数も設定します。
2 - $photo 変数を使用して $Image という変数を作成するように、exif 抽出スクリプトを変更しました。これは、exif 抽出後にスクリプトのさまざまなポイントで使用されます。たとえば、画像を取得して表示したり、画像の詳細をSQL データベース。
3 - いくつかの「echo」コマンドを設定して、変数の内容を確認し、ファイルが存在することも確認しました。
これは現在のスクリプト コードです。
$Image = $photo;
echo "$photo";
echo $Image;
echo file_exists($Image) ? 'ok' : ' image file not found';
echo file_exists($photo) ? 'ok' : ' photo file not found';
echo $thumb;
echo file_exists($thumb) ? 'ok' : ' thumb file not found';
$exif = exif_read_data($photo, 0, true);
結果のエコー文字列は次のように表示されます
original/raleighbike.jpg - content of variable $photo (correct)
original/raleighbike.jpg - content of variable $Image (correct)
image file not found - when checking for the file in $Image (incorrect, file does exist)
photo file not found - when checking for the file in $photo (incorrect, file does exist)
thumb file not found - when checking for the file in $thumb (incorrect, file does exist)
thumbnail/thumb_raleighbike.jpg
したがって、ファイルがハードコードされている場合、スクリプトはそのファイルを物理的に見つけることができるように見えますが、ファイルが変数として指定されている場合、スクリプトはそれらを見つけることができません。
なぜこれが起こるのかについて誰か考えがありますか - この問題を経験したのは私だけではありません;-(