浏览器上未显示PHP、IIS图像
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情

The following code is not displaying the image from IIS 6/PHP 5.2.9. It works OK from XAMPP (PHP 5.3)

$img = @imagecreate(200, 200);
$background_color = imagecolorallocate($img, 0, 0, 0);
$text_color = imagecolorallocate($img, 233, 14, 91);
imagestring($img, 12, 60, 90,  'image here', $text_color);
header('Last-Modified: ' . date('D, d M Y H:i:s')); 
header('Content-type: image/jpg');
header('Content-Disposition: inline; filename=blank_jpeg.jpg'); 
ob_start();
    imagejpeg($img);
    imagedestroy($img);
    $jpeg = ob_get_contents();
ob_end_clean();
header ('Content-length: ' . strlen($jpeg));
echo $jpeg;
exit;

#0

I finally tracked the error to its roots. This code was in a plugin running on Wordpress. Now in the Wordpress community, there is a technique used to enable pretty-urls on IIS based systems that do not have some appropriate way of processing mod_rewrite. The technique involves capturing 404 errors caused by the pretty-urls and re-routing the page through index.php.

It turns out that somewhere along the way some 3 characters (ï, » and ¿) are inserted in the output stream before any other page output. This is not a problem for html pages since the characters are invisible and the browser just ignores them. However, in the case of images, the format of the binary data is critical. So inserting those three characters ahead of the image data results in an unrecognizable sequence of bytes that gets rejected by the browser since it expects an image.

The solution in my particular case was to enable mod_rewrite handling and the problem disappeared. I hope this info saves someone hours of debugging.

#1

More likely than not GD is not installed correctly for IIS.

Turn on error logging, specify an error log and check it for errors when calling the script.

推荐文章

使用CertGetCertificateChain验证EXE上的签名

使用CertGetCertificateChain验证EXE上的签名

推荐文章

第1章 启蒙 ——1.6.什么是集成开发环境

第1章 启蒙 ——1.6.什么是集成开发环境

推荐文章

是否有方法使用包含CSS或JS文件引用的WebControl的部分缓存?

是否有方法使用包含CSS或JS文件引用的WebControl的部分缓存?

推荐文章

rails用户身份验证的控制器测试失败

rails用户身份验证的控制器测试失败

推荐文章

Arrlist的重要方法重写

Arrlist的重要方法重写

推荐文章

Flex/AIR:加载的HTML链接不起作用?

Flex/AIR:加载的HTML链接不起作用?

推荐文章

使用复选框选择ASP.NET GridView中的行

使用复选框选择ASP.NET GridView中的行

推荐文章

第2章 准备——2.2.安装IDE——Code::Blocks

第2章 准备——2.2.安装IDE——Code::Blocks

推荐文章

WPF中的背景属性问题

WPF中的背景属性问题

推荐文章

Python简单处理文件

Python简单处理文件

推荐文章

为什么有些函数非常长?(学术研究需要的想法!)

为什么有些函数非常长?(学术研究需要的想法!)

推荐文章

JTable编辑器随实时数据变化

JTable编辑器随实时数据变化

推荐文章

.net 2.0 控件中嵌入资源

.net 2.0 控件中嵌入资源

推荐文章

在Compact框架中是否有StructLayout“Pack”属性的替代方法?

在Compact框架中是否有StructLayout“Pack”属性的替代方法?

推荐文章

FastReport 保存为文件

FastReport 保存为文件

推荐文章

开始.NET compact框架开发的硬件

开始.NET compact框架开发的硬件