私のスクリプトは画像を作成し、サーバーに保存します。その後、ファイルのパーミッションを 644 に変更し、他のユーザーがイメージを読み取れるようにします。
imagejpeg($myImage, $savePath);
chmod($savePath, 0644);
画像への参照は、キャッシング ヘッダーを追加できる別のスクリプトでラップされます。基本的に、この 2 番目のスクリプトはいくつかのヘッダーを追加してから、ファイルのコンテンツを出力ストリームに書き込みます。
header("HTTP/1.1 200 OK");
//... caching headers
header("Content-Type: image/jpeg");
header("Content-Length: $Size");
readfile($ImageFile);
ただし、これによりパーミッション エラーが発生します。
Warning: readfile(...) [function.readfile]: failed to open stream: Permission denied in /.../showImage.php on line 20
行 20 は、readfile()
呼び出しを含む行です。
への呼び出しfileperms($ImageFile)
は 33412 を返します。これは 8 進数で 101204 です。ftp 経由で、(ftp ユーザーの) 実際のファイル許可が 644 であることを確認できます。
画像のfileowner()
は 4 桁のユーザー名を持つユーザーでget_current_user()
、スクリプトの は私の ftp アカウントです。
ブラウザから直接画像にアクセスできます。スクリプトのみがアクセスできません。
ファイルのスクリプト アクセスを有効にするにはどうすればよいですか?