我有以下内容:
$imageurl = "<img class='item_thumb'
src='getimagethumbnail.php?imagename=".urlencode($product_image)."&from=".$prodimagedir."'
min-width='150' min-height='150' border='0' class='item_thumb'>";
创建以下html:
<img class="item_thumb" border="0" min-height="150" min-width="150"
src="getimagethumbnail.php?imagename=productsmall_1248886833bloggingbok.jpg&
from=products/"/>
但是,图像不会显示。我将浏览器指向src链接,它给了我一堆不可读的文本,我假设是图像意味着脚本getimagethumbnail工作正常。 (我猜)。
但正如我所说,图像根本没有出现。有什么问题,我可以采取哪些步骤来确定问题?
添加,当我将浏览器指向该src链接时:它还给了我:
Warning: Cannot modify header information - headers already sent by
(output started at /home/dji/public_html/getimagethumbnail.php:35) in
/home/dji/public_html/includes/functions.php on line 4953
我认为这是因为输出?这个脚本工作正常,据我所知,我没有对它进行任何修改!
由于
答案 0 :(得分:7)
您正在尝试在输出空格/字符后发送header('Content-Type')
命令。
您需要确保header
命令在页面上打印任何内容之前。
这将有效:
header('Content-Type: ....');
readfile('file.png');
这不会
readfile('file.png');
header('Content-Type: ....');
这是因为header
命令告诉浏览器在内容中查找的内容。必须在任何内容之前发送所有标头,因为这是连接的工作方式。在内容发送完毕后,无法告知浏览器会发生什么。
与服务器打开连接 - &gt;获取标题 - &gt;获取内容 - &gt;关闭连接
这背后的一个重要原因是encoding
。当内容通过时,浏览器必须正确解码。如果你在页面中间发送一个标题告诉浏览器编码类型是a,当它像b一样处理它时,事情会变得非常混乱。
因此,为了正确发送标头,必须在任何输出之前放置header命令。
答案 1 :(得分:0)
当您将内容输出到输出然后尝试使用header()方法时,会导致该错误。在使用header()执行所需操作之前,不应该输出任何内容。在此之前不应该有任何东西,甚至不是白色空间。
答案 2 :(得分:0)
在设置图像类型的标题之前,您已经产生了一些输出(在第35行)。这可能只是php标记之间的空格,或者是您忘记删除的内容。
答案 3 :(得分:0)
您的getimagethumbnail.php
脚本未生成有效图片;它包含文本(你引用的警告信息),这会阻止浏览器呈现它。根据错误文字判断,我猜这是由于对getimagethumbnail.php
或functions.php
所做的更改。
从根本上说,问题是functions.php
在输出已经发送到浏览器之后试图调用header()
,这只是普通的不起作用。您需要检查这两个文件,并确保对header()
的任何来电都发送到任何之前,然后将数据发送到浏览器。
您可能需要关闭display_errors
设置,因为任何因任何原因而产生任何警告或错误的代码都会导致您在header()
之前发生警告/错误时遇到的问题调用。 (只要确保你有错误登录,所以你仍然可以看到出了什么问题!)