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 文件并且图像/jpeg 处于活动状态。

所以我想我的问题是:apache 设置是否有可能弄乱我的图像。

编辑:

我尝试使用 php man 中的代码

// 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);

在我的本地计算机上它可以工作,但不能在我们的服务器上。它给我一个空白页,没有错误。

如果我将 imagejpeg 与第二个参数一起使用并将其保存到桌面,它似乎一切都很好并且完全可见

4

1 回答 1

1

我已经多次看到这个问题。如果您还没有这样做,请尝试使用文本编辑器打开损坏的图像,看看它是否有问题。尝试在结果文件和原始文件(来自服务器)之间进行差异。

可能想到的错误:图像中显示的 PHP 通知或警告、空白字符。例如,开头之前的空行可能会破坏您的图像。

于 2012-03-22T16:06:08.160 回答