昨天终于将客户的一个网站迁移至虚拟主机上,满怀希望的敲入网址。唰的一声,网站很轻松的被打开了。 心里那个高兴啊~~~ 咦,怎么产品图片都没有显示出来。一块块都是空白。敲入img src对应的地址,看看是怎么回事?结果显示下面这样的效果:

IE下是这样:

没办法,开始漫长的调试过程。解决步骤如下:

1. 是否是功能代码的错误:按照 关键字 图像   。。。 因其本身有错无法显示,很快google之几条解决方案。

 Header("Content-type: image/PNG");这句代码前加上ob_clean();清除输出

在对应的代码位置加入 ob_clean();

运行的结果没什么改变。

PS:为了定位该错误,事先用echo一步步输出调试了很久,才定位之具体的代码。

2. 思考:为啥在本地好好的,传上去就错了呢?是不是环境配置问题。

本地环境 XAMP,服务器环境 :windows + IIS7.5。

为了比较Server返回结果的异同,决定用 Fiddler2 来跟踪本地访问同样一个文件和服务器访问同样一个文件的异同。

打开Fiddler2,很快定位出结果。

测试地址:

A、http://www.server.net/index.php?ac=public&at=zoom&filename=upfile%2F2011%2F08%2F30%2F20110830222415_540.jpg&w=&h=120&iszoom=1

B、http://localhost:90/index.php?ac=public&at=zoom&filename=upfile%2F2011%2F08%2F30%2F20110830222415_540.jpg&w=&h=120&iszoom=1

服务器返回结果:

本地返回结果:

异同是:服务器文件头多了一个 FF BB BF

这个是什么呢?继续搜索,结果是UTF8的BOM头。也就是IIS返回的文件里多了一个BOM头。

UTF8普及知识见:http://blog.csdn.net/hiruyue/article/details/8747221

3. 开始检查 有那个文件被变成了带BOM头的UTF8,于是找到一个PHP版本的检测BOM头的代码,存成PHP文件,传到服务器。很快定位到结果,系统的配置文件被改成带BOM头的文件了。

这时候,才想起在用FTP上传网站以后,采用FTP自带的编辑工具修改了配置文件。当时是用NOTEPAD修改的。原来如此,赶紧将配置文件重新下载,用NOTEPAD++更改文件类型为 不带BOM的UTF8,保存,上传,访问。网站终于恢复了正常。

看看时间,已经过去了5个小时。

PS:在第二步的时候,还看到IIS在发送图片二进制流之前还发送了一个ICO文件流,这也会导致错误。

结束语:

在修改完成以后,发现了Orain兄弟的文章。他遇到的问题和我类似。PHP 使用流方式下载文件与 UTF-8 的 BOM 问题

  总结:

1.遇到问题,先想想原因,再去解决。否则很容易纠结在调试代码中。

2.多搜索

奋战5个小时解决诡异的PHP--“图像XX因其本身有错无法显示”的问题的更多相关文章

  1. 解决PHP生成校验码时“图像因其本身有错无法显示”的错误

    今天使用http://crazymud.iteye.com/blog/452293给出的代码进行PHP生成校验码功能的实现,发现firefox一直提示“图像.......因其本身有错无法显示”的问题, ...

  2. php图片本身有错无法显示的解决办法

    1.取消所有错误提示 2.如果没有报错,在header前(即设置输出格式前)使用ob_clean();

  3. myeclipse中控制台日志比实际晚8小时解决方法及java日志处理

    今天终于忍不住要解决myeclipse控制台中日志显示比实际晚8小时的问题,开始以为myeclipse编辑器时间问题,后来想想不对,myeclipse控制台打印的是tomcat的日志,随后以为是log ...

  4. 解决Linux下启动Tomcat遇到Neither the JAVA_HOME ...报错

    解决Linux下启动Tomcat遇到Neither the JAVA_HOME ...报错 Neither the JAVA_HOME nor the JRE_HOME environment var ...

  5. 用python解决打标签时将xml文件的标签名打错

    用python解决打标签时将xml文件的标签名打错 问题描述:再进行达标签时将magnetic_tile的标签名错误的打成了magnetic_title,又不想一张一张的修改 出现问题的xml文件 & ...

  6. PHP date函数时间相差8个小时解决办法

    php中date时间相差8个小时的解决办法 作者: PHP中文网|标签:|2016-7-25 08:46 在Windows上,在默认的PHP配置下,date函数返回的时间值和当地时间总是相差8小时,即 ...

  7. (学)解决诡异的 Exception type: SocketException 127.0.0.1:80

    许久不发博了,老杨听完故事让我持续写一下“十万个为什么” 一.背景:  昨天我们亲密的战友HH刘老板亲临现场,指出我们协用的一个项目,客户方面反馈手持终端系统不定期“卡死”,要我们安排人飞到广州驻场解 ...

  8. 【转】PHP date("Y-m-d H:i:s");获取当前时间 差8小时解决办法

    原因:                                                                                              网络资 ...

  9. win7和ubuntu双系统,win7时间晚8小时解决办法。

    装了Win7和Ubuntu双系统后发现,使用Ubuntu后再登陆win7时系统显示时间不准确,比实际时间晚了8小时. 搜索后发现原来Linux和Windows的系统时间管理是不同的.Linux是以主板 ...

随机推荐

  1. 统一iOS客户端和服务器端认证

    最近公司的同事业余时间搞了一个内部的类about.me(https://about.me/)的网站Ocelots,想来是一个很洋气的注意,以后跟客户介绍公司的时候,直接登录该网站,谈到谁的时候,就打开 ...

  2. WebApi2 jsonp跨域问题

    一:故事背景     以前在写WebApi2的时候,一直是用作前后端分离(WebApi2 +angularjs),可是最近自己在给WebApp写接口的时候遇到了很多坑,总结一下就是跨域问题.而跨域问题 ...

  3. TF/IDF计算方法

    FROM:http://blog.csdn.net/pennyliang/article/details/1231028 我们已经谈过了如何自动下载网页.如何建立索引.如何衡量网页的质量(Page R ...

  4. 浅淡Windows7 32位与64位/x86与x64的区别

    看到有很多会员问到底是选Windows7 x86,还是选x64.这里简单的谈一下这这两种系统的区别. 简单的说x86代表32位操作系统  x64代表64位操作系统. 简单的判断电脑是否支持64位操作系 ...

  5. 论文阅读(2014-2)----The YouTube Video Recommendation System

    这是谷歌youtube在2010的一篇文章,估计现在的思路有很多升级了,但是里面的知识点还是很不错的.主要讲youtube的个性化推荐思路.下面根据论文的结构我把我理解的思路整理如下,如果有问题,欢迎 ...

  6. [搜片神器]BT管理程序数据库速度调试优化问题

    DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO 数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr 谢谢园子 ...

  7. [搜片神器]DHT后台管理程序数据库流程设计优化学习交流

    谢谢园子朋友的支持,已经找到个VPS进行测试,国外的服务器: sosobt.com 大家可以给提点意见... 服务器在抓取和处理同时进行,所以访问速度慢是有些的,特别是搜索速度通过SQL的like来查 ...

  8. git初探

    1 Linux下Git和GitHub环境的搭建 第一步: 安装Git,使用命令 "sudo apt-get install git" 第二步: 到GitHub上创建GitHub帐号 ...

  9. Scroll文字滚动js

    function ScrollImgLeft(){ var speed=50, doc=document, scroll_begin = doc.getElementById("scroll ...

  10. API断点大全

    1.限制程序功能函数 EnableMenuItem 允许.禁止或变灰指定的菜单条目EnableWindow 允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰) 2.对话框函数 CreateDia ...