0

このphpスクリプトを使用してサーバーに画像を表示したいと思います。

$file = fopen('/Volumes/PROMISE/products/jpeg/89239-282.jpg', 'rb');
header('Content-Type: image/jpeg');
fpassthru($file);

しかし、壊れた画像が表示されます。このスクリプトは現在、テスト目的でインデックスファイルの先頭にあるため、ヘッダーの問題はないと思います。実際、インデックスファイルにあるのはそれだけです...

使ってみました

echo file_get_contents('/Volumes/PROMISE/products/jpeg/89239-282.jpg');

また、運が悪ければ、ファイルは指定されたパスに存在し、777のアクセス許可があります。

私の最後の考えは、それがApacheサーバー上のいくつかの構成である可能性があるということです。画像にブレーキをかけることができる設定さえあるかどうかわかりませんか?

これは.htaccessファイルの設定です

Options +FollowSymlinks -Multiviews

これはhttpd.confファイルからの設定です

Options All -MultiViews -ExecCGI -Indexes

mime.typesファイルを確認したところ、image/jpegがアクティブになっています。

だから私は私の質問だと思います:apacheのセットアップが私の画像を台無しにしている可能性はありますか?

編集:

phpmanのコードを使ってみました

// Create a blank image and add some text
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);

// Set the content type header - in this case image/jpeg
header('Content-Type: image/jpeg');

// Output the image
imagejpeg($im);

// Free up memory
imagedestroy($im);

私のローカルコンピューターでは動作しますが、サーバーでは動作しません。空白のページが表示され、エラーは発生しません。

2番目のパラメータでimagejpegを使用してデスクトップに保存すると、すべて問題なく完全に表示できるように見えます

4

1 に答える 1

1

私はその問題を何度も見ました。まだ行っていない場合は、壊れた画像をテキストエディタで開いて、問題がないかどうかを確認してください。結果のファイルと(サーバーからの)元のファイルとの差分を試してください。

考えられるエラー:画像に表示されるPHPの通知または警告、空白文字。たとえば、開口部の前の空の行が画像を壊す可能性があります。

于 2012-03-22T16:06:08.160 に答える