前几天有网站更换服务器,是PHP+MySQL的,本来以为没什么问题,网站文件转过去,MYSQL数据库导出来换过去就OK了,谁知道出现一个让人费解的问题,新闻列表可以正常显示,但是每条新闻的详细内容却无法正常显示,本该显示内容的位置却是一片空白,可能是服务器对错误有异常处理,连个出错信息都看不到。既然在原来的服务器上可以正常运行,那应该是新换到的服务器有问题,联系管理员查找原因,结果查了好几天也没查出来,很是郁闷。
因为程序不是自己开发的,本人对PHP程序也接触不多,不是太熟悉,没办法,只好向其他同事求助,一起研究了半天也没结果。不过有这几十分钟的时间也让我对PHP有了更进一步的的理解,程序都是相通的嘛,只是语法、用法有所区别,因此一个人静下心来仔细分析查找,终于被我发现了一些端倪,原来是网页返回参数不正常。程序里原来使用$HTTP_POST_VARS,$HTTP_GET_VARS来获取页面返回值,经查找资料,这种用法在版本PHP5之前用是没有问题的,但之后再用就有可能会不正常了,现在获取到的返回参数是空的,sql查询语句中必要的参数没有,因此页面显示异常,问题的根源就出在这里。
既然找到了症结所在,那就对症下药了,找了下资料,PHP5以后的版本中取代那两个参数的是:$_POST、$_GET,其实不改程序只要调整服务器上PHP的设置也是可以解决的,但我没那权限,只好从程序入手。解决方法就是把所有的$HTTP_POST_VARS,$HTTP_GET_VARS换成$_POST、$_GET,但是如果每个页面挨着换也太麻烦了,于是找到函数集的页面或是公用包含页面也可以,然后在页面代码头部添加下面的语句:
$HTTP_POST_VARS=$_POST;
$HTTP_GET_VARS=$_GET;
最后保存,预览,页面可以正常显示了,问题完美解决,长舒一口气!
参考资料如下:/Page.asp?SysID=20101123184541533535181