今天我正埋头工作,突然有人敲我后背,麻烦你帮下忙,我这个系统后台老报错,你帮我看下怎么回事。他打开后台我一看,头部显示了一个warning:PHP Warning: Call-time pass-by-reference has been deprecated in D: \\xxx\xx\xx\xx.php xx line首先我询问,这台是windows服务器?他回答:不,是linux,我说linux怎么会有D:\\...这种路径?他说:不清楚啊。管他要了ssh帐号,登录了上去,难道是他的web服务运行在linux的虚拟机上,那我登录ssh干什么?应该登录虚拟环境下的windows才对啊。算了,还是先ssh上去看看再说吧。首先去找了一下提示信息里那个报错页面,xx.php,按照目录提示,竟然没有奇怪了,没有怎么会说它报错,琢磨了半天百思不得其解。google一下这个warning,提示可能与一些设置有关,allow_call_time_pass_reference是否为on,session的写入目录是否存在,文件夹是否有写入权限。一一检查更改后重启apache,仍然报错,难道我改错了php.ini?比对phpinfo的php.ini加载路径,没错啊。奇怪了,于是我尝试把错误提示完全屏蔽。重启,刷新,还报错这种情况一般有三种可能:
1 改错php.ini了,但这个我上面已经排除了。
2 系统的某个配置文件用ini_set函数又把它打开了。
3 人品问题。(我自认为人品还过得去)于是就第2点,我想,还是从检查代码入手吧。首先打开后台的首页代码,我掐指一算,应该是在他包含的某个文件里面产生的这个错误。打开第一个include的头部文件,没发现什么异常的,也没有设置display_errors的。再打开第二个包含的页面文件,还是没发现,第二个包含的页面里面还包含了很多。于是我再下去一个个找,第三个,第四个……当打开某个xx.php文件一看,我瞬间傻眼了。代码如下:PHP Warning: Call-time pass-by-reference has been deprecated in D: \\xxx\xx\xx\xx.php xx line
<?php
 \\php代码
?>我顿时蒙了一下,这是什么语法???我实在太孤陋寡闻了?抱着试试看的想法,在VI下对准这一行按了两下D键删除掉那行PHP Warning: Call-time pass-by-reference has been deprecated in D: \\xxx\xx\xx\xx.php xx line字后,刷新页面。好了,终于不报错了接着我便和他说好了,他问我怎么回事,我当时正在思考这是怎么回事,于是打发他说道:我的人品问题。回到家后我才有所顿悟,那哥们不会是玩我的吧?!
以上情况完全属实,总体算起来折腾来折腾去大概花了我半个小时的时间。希望各位兄台以后如果也碰到这种莫名其妙的问题后一定要首先考虑自己是不是人品有问题。