[PHP-Debug] 使用 php -l 调试 PHP 错误遇到的坑

有时候,因为系统代码的增加,造成很多文件的相互关联,又或者某些第三接口(微信等),你必须要在线上调试。

线上环境,我们都是设置 “ini_set('display_errors' , false)” ,目的是为了不让错误暴露在线上,以免增加代码暴露的风险,以及更见友好的用户体验。

所以,我养成了一个习惯直接在 linux 服务器上面,使用 php -l 来检查运行文件,并且一直以为这个命令也会检查“调用未定义函数”这些错误等。

今天才发现,php -l 只是检查了简单的语法规范,并没有检查其他的错误,如:变量未定义,调用的函数是否存在等等。

也就是说,php -l 只是检查了文件的语法表达习惯,而根本不会检查文件的运行是否有错误。

//# php -l application/Controller/Openplatform.php
//No syntax errors detected in application/Controller/Openplatform.php

// 调用了不存在的函数 -- urlecode(),这个错误 php -l 是无法检查出来的

$weixin_register_url = "https://open.weixin.qq.com/connect/oauth2/authorize?app .urlecode($weixin_redirect_uri).'=&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect';