刚把一个旧盒子升级到了Ubuntu 10.04.2 LTS。 Apache不会将图像显示到超过2K的浏览器。 小图像似乎显示正常。 静态的HTML和PHP继续正常工作。
安装:
apache2 2.2.14-5ubuntu8.4 apache2-mpm-prefork 2.2.14-5ubuntu8.4 apache2-utils 2.2.14-5ubuntu8.4 apache2.2-bin 2.2.14-5ubuntu8.4 apache2.2-common 2.2.14-5ubuntu8.4
这是一个在浏览器中不能正常显示的图像的ngrep:
T 192.168.0.4:32907 - > 192.168.0.54:80 [AP]
GET /path/path/logo.png HTTP / 1.1..Host:192.1
68.0.54..Connection:keep-alive.Accept:application / xml,application / xhtml +
XML,文本/ HTML; Q = 0.9,文本/无格式; Q = 0.8,图像/ PNG,* / *; Q = 0.5..User银
ent:Mozilla / 5.0(X11; U; Linux x86_64; en-US)AppleWebKit / 534.13
(KHTML,像Gecko)Chrome / 9.0.597.98 Safari / 534.13 .Accept-Enco
丁:gzip,deflate,sdch ..接受 - 语言:en-US,en; q = 0.8。接受 -
字符集:ISO-8859-1,utf-8; q = 0.7,*; q = 0.3 ....
T 192.168.0.54:80 - > 192.168.0.4:32907 [A]
HTTP / 1.1 200 OK..Date:Wed,09 Mar 2011 05:28:38 GMT..Server:Apa
che / 2.2.14(Ubuntu).. Last-Modified:Tue,05 Oct 2010 11:59:17 GMT
..ETag:“17b6f4-15fe-491dd63eb2f40”.. Accept-Ranges:bytes ..Conten
t-Length:5630..Keep-Alive:timeout = 15,max = 100..Connection:Keep
-Alive..Content-Type:image / png ..... PNG ........ IHDR ...!... v ......
%......的sRGB ......... BKGD ..............物理学.................时间..
等等...
这对我来说很好!
我已经尝试过Firefox和Chrome浏览器,都显示小图像,但是当请求一个大的图像浏览器提示下载文件。
当图像文件保存到本地计算机时,它已损坏,这也需要很长时间来保存,这让我觉得浏览器无法看到从Apache发送的内容长度头。 另外,当我查看保存的图像文件时,它包含了来自apache的头文件,以及顶部的一些垃圾文件,如下所示:
vi logo.png: ^ @ ^ ^ UAD @ $ ^】V,3S ^ H ^ @ E 1 @ ^ Q,N!@ ^ @@ ^ F ^ @ ^ @ ^一6A @ ^ @ ^ d ^ @ P 1Y¬ rÇŹéw^ P ^ @Ú^ @ ^ @ ^ A ^ A 1 H ^ @ ^ G ^ ^] ^ @ pbSHTTP / 1.1 200 OK ^ M date:星期三,09三月2011 04:47:04 GMT ^ M 服务器:Apache / 2.2.14(Ubuntu)^ M Last-Modified:Tue,05 Oct 2010 11:59:17 GMT ^ M ETag:“17b6ff-157c-491dd63eb2f40”^ M Accept-Ranges:bytes ^ M 内容长度:5500 ^ M 保持活跃:超时= 15,最大= 94 ^ M 连接:保持活跃^ M 内容types:image / png ^ M ^ M PNG ^ M 等等...
有任何想法吗? 这让我疯狂。
在apache错误日志中没有任何东西,并且权限是好的(因为图像数据在那里,它只是有点损坏)。
这个Ubuntu的盒子上没有代理或者iptables。
谢谢堆!
戴夫
PS:刚刚尝试从另一台电脑的IE浏览器,同样的问题:( PPS:重新启动服务器,没有帮助。
更新:
感谢那些wget的想法:
这里是远程机器的wget输出(它不能读取头文件)
dbaker @ fatburt:〜$ wget http://foo/static/images2/nav_sprite.jpg - 2011-03-10 17:41:06-- http://foo/static/images2/nav_sprite.jpg 解决foo ... 192.168.0.54 连接到foo | 192.168.0.54 |:80 ...已连接。 HTTP请求发送,等待响应... 200没有头,假设HTTP / 0.9 长度:未指定 储存到:`nav_sprite.jpg'
这里的wget从本地服务器输出回本身(工作正常)
wget http://foo/static/images2/nav_sprite.jpg - 2011-03-10 17:44:51 - http://foo/static/images2/nav_sprite.jpg 解决foo ... 192.168.0.54 连接到foo | 192.168.0.54 |:80 ...已连接。 发送HTTP请求,等待响应... 200 OK 长度:79192(77K)[image / jpeg] 储存到:`nav_sprite.jpg'
更新:
谢谢@uesp添加“EnableMMAPclosures”到/etc/apache2/httpd.conf并重新启动Apache修复它,不知道为什么,但它。
干杯!
有几件事你可以尝试:
EnableSendfile off ,然后重新启动(请参阅Apache核心文档 )。 也请尝试EnableMMAP off (请参阅此处 ,与您的问题非常相似)。 这个问题不是基于浏览器的,无论您使用哪种浏览器,都会遇到此问题。 该文件已损坏,因为它没有完全下载。 您可以通过scp或ftp传输(您应该这样做来validation它实际上并没有损坏)来validation。
尝试一个wget的特定文件。 这将允许您直接关注下载文件,而不是处理任何可能出现的PHP或HTML问题。
wget http://your.website.com/path/to/image.png
另外,试试这个gif和jpg文件,这样你可以肯定,也许这不仅仅是png和升级的东西。
还有一些东西要看你的日志:
# tail -f /path/to/apache/logs
这样,当您尝试访问图像时,可以打开第二个terminal并实时观看结果。
如果你没有得到任何的地方(或希望你跟踪问题到Apache而不是图像)卸载,然后重新安装Apache。