2010-01-23 86 views
0

下面的代码不从IIS 6/PHP 5.2.9显示图像。它从XAMPP工作正常(PHP 5.3)PHP,IIS图像不显示在浏览器

$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

更有可能不是GD正确安装IIS。

打开error loggingspecify an error log和调用脚本的时候检查错误。

+0

在IE7,它实际上输出包含 jibberish“CREATOR:GD-JPEG V1.0(使用IJG JPEG V62),”所以我觉得GD正在 – KalenGi 2010-01-23 07:00:30

+0

打开错误日志揭示了大量的非GD错误这一定会造成奇怪的行为。 – KalenGi 2010-01-25 01:11:40

0

我最终跟踪误差其根源。此代码位于运行于Wordpress上的插件中。现在,在WordPress的社区,有一个用于启用IIS的系统非常的URL没有mod_rewrite的处理一些适当的方式的技术。该技术涉及捕获由漂亮的url导致的404错误,并通过index.php重新路由页面。

事实证明,沿途某处一些3个字符()被插入在输出流中的任何其它页面输出之前。这对HTML页面来说不是问题,因为字符是不可见的,浏览器只是忽略它们。但是,在图像的情况下,二进制数据的格式非常重要。因此,在得到由浏览器,因为它是一个图片拒绝字节序列无法辨认前方的图像数据的结果将那些三个大字。

在我的具体情况的解决方案是使mod_rewrite的处理和问题就消失了。我希望这个信息可以节省一些人的调试时间。

相关问题