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

线上环境,我们都是设置 “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?appid=wxa5a632d87776f994&redirect_uri=" .urlecode($weixin_redirect_uri).'=&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect';

[PHP-Debug] 使用 php -l 调试 PHP 错误遇到的坑的更多相关文章

  1. 《Debug Hacks》和调试技巧【转】

    转自:https://blog.csdn.net/sdulibh/article/details/46462529 Debug Hacks 作者为吉冈弘隆.大和一洋.大岩尚宏.安部东洋.吉田俊辅,有中 ...

  2. Linux Kernel - Debug Guide (Linux内核调试指南 )

    http://blog.csdn.net/blizmax6/article/details/6747601 linux内核调试指南 一些前言 作者前言 知识从哪里来 为什么撰写本文档 为什么需要汇编级 ...

  3. 【转】gdb 调试段错误

    [转]gdb 调试段错误 转自:blog.csdn.net/yangzhu1982/article/details/6318600 开发嵌入式Linux的时候经常会遇到segmentation fau ...

  4. linux ulimit的使用,如何产生core文件,调试段错误

    ---恢复内容开始--- 下面先简单介绍下ulimit命令: 1. limit -a 可以查看系统各种资源的限制,如: core文件大小,数据段的大小等. $ ulimit -a core file ...

  5. 使用单进程、strace、gdb调试PHP错误

    使用单进程.strace.gdb调试PHP错误 PHP一般是在FPM的呵护下运行的,但是某些情况下进程异常崩溃会导致502.下面是解决思想: 1. 单进程运行: php -d display_erro ...

  6. 在Linux中调试段错误(core dumped)

    在Linux中调试段错误(core dumped) 在作比赛的时候经常遇到段错误, 但是一般都采用的是printf打印信息这种笨方法,而且定位bug比较慢,今天尝试利用gdb工具调试段错误. 段错误( ...

  7. gradlew 命令行 build 调试 构建错误 Manifest merger failed MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. Linux下调试段错误 (gdb,core,ulimit)

    Linux环境下经常遇到某个进程挂掉而找不到原因,我们可以通过生成core file文件加上gdb来定位. (1)首先 在makefile中要增加编译调试选项 -g,才可以利用下面的gdb来调试 gc ...

  9. linux驱动调试--段错误之oops信息分析

    linux驱动调试--段错误之oops信息分析 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id= ...

随机推荐

  1. python数据分析笔记——数据加载与整理]

    [ python数据分析笔记——数据加载与整理] https://mp.weixin.qq.com/s?__biz=MjM5MDM3Nzg0NA==&mid=2651588899&id ...

  2. ORACLE用户永不被锁

    alter profile default limit FAILED_LOGIN_ATTEMPTS UNLIMITED;

  3. angularjs动态添加节点时,绑定到$scope中

    <html> <head> <meta charset="utf-8"/> <script src="https://cdn.b ...

  4. avg(xxxxxx)什么时候能独自出现?

    avg(xxxxxx)是作为求一组数据的平均数,需要有这组数据的总数和个数,所以通常配合着group by来使用, 比如: SELECT ID, AVG(GRADE) AS 平均数 FROM TEST ...

  5. SQL dialect is not configured

    在Idea中,xml配置文件报错:SQL dialect is not configured 解决方法如下: 在Idea中,在报错的地方按alt+enter,然后点击Generic配置dialect即 ...

  6. x86汇编知识点汇总

    目录: 1.进制转换 2.原码.反码.补码 3.寄存器 4.存储器的段结构 5.堆栈 6.传送类指令 7.算术运算类指令(不含乘除) 8.位操作类指令 9.标志位操作指令 10.标识符.常量与变量 1 ...

  7. Cocos2d-x 3.x 在wp8中调用系统字体的解决方案

    问题和解决方法: 在使用cocos2d-x设计游戏的时候,字体是个很重要的部分.如果游戏中对字体没有太多的要求,就可以使用平台系统自带的字体,可以节省游戏的尺寸,以及减小游戏运行时所占用的内存.当加载 ...

  8. struck 模块

    struck.pack(type,num) type : 是num的类型 num : int类型 r = struck.pack  把一个num内容打包成一个c规定的字节bytes的个数 struck ...

  9. Url,HTTPUrlConnection(一)

    package com.cmy.urlcon; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...

  10. Linux找不到动态库

    首先系统上得有,只是路径问题 可使用ldd查看可执行程序的依赖库 以下都需要超级权限: find / -name libnet.so.9 // 可能在/usr/lib或/usr/local/lib中 ...