PHP中debug基本方法
一、检查是否有语法错误
php -l test.php
二、基本调试
基本调试 API:
var_dump($var);print_r($var);echo $var;
基本的配置:
display_errors、log_errors、error_reporting、error_log
备注:有时候,会关闭报错,需要手动开启。
常用代码:
ini_set("display_errors","On");
error_reporting(E_ALL);
利用错误收集函数
参考手册:http://php.net/manual/zh/book.errorfunc.php
debug_backtrace — 产生一条回溯跟踪(backtrace)
debug_print_backtrace — 打印一条回溯。
error_clear_last — 清除最近一次错误
error_get_last — 获取最后发生的错误
error_log — 发送错误信息到某个地方
error_reporting — 设置应该报告何种 PHP 错误
restore_error_handler — 还原之前的错误处理函数
restore_exception_handler — 恢复之前定义过的异常处理函数。
set_error_handler — 设置用户自定义的错误处理函数
set_exception_handler — 设置用户自定义的异常处理函数
trigger_error — 产生一个用户级别的 error/warning/notice 信息
user_error — trigger_error 的别名
register_shutdown_function('my_shutdown_handler');
function my_shutdown_handler()
{
$error = error_get_last();
if ($error) {
try{
//发送邮件
} catch(Exception $e) {
}
}
return false;
}
三、记log
你认为可能出错的地方
file_put_contents('log.text', var_export($var, 1), FILE_APPEND);
另外也需要配置error_log
一般是查看apache的错误日志。命令行执行的错误,并不能收集。
四、使用工具:xdebug
https://www.cnblogs.com/spareribs/archive/2017/06/27/7084828.html
PHP中debug基本方法的更多相关文章
- 千万不要误用 java 中的 HashCode 方法
刚才debug追堆栈的时候发现一个很奇怪的问题 我用IE8和Google的浏览器访问同一个地址 Action的 scope="session" 也设置了 而且两个浏览器提交的参数m ...
- C++中debug和release的区别 . 转载
vc中debug和release的不同 收藏 在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当 ...
- [转]在Eclipse中Debug 为什么显示source not found
在Eclipse中Debug 为什么显示source not found http://zhidao.baidu.com/link?url=-jna2HB_k2FW72GPbT--5Qg2AWi3Ip ...
- 解决关于jquery中$.get()方法总是报“HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy”错的方法
解决关于jquery中$.get()方法总是报“HierarchyRequestError: Node cannot be inserted at the specified point in the ...
- 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...
- 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
参考原贴地址:https://blog.csdn.net/clementad/article/details/47339519 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Trans ...
- HTML5中的data-*属性和jQuery中的.data()方法使用
原文地址链接:http://blog.csdn.net/fly_zxy/article/details/50687691: HTML5中的data-*属性 我们往往会根据需要在HTML标记上添加自定义 ...
- 【转】在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational)的方法,注解失效的原因和解决方法
参考 原文链接 @Transactional does not work on method level 描述 在同一个类中,一个方法调用另外一个有注解(比如@Async,@Transational) ...
- springboot项目在Eclipse/Myeclipse中Debug启动跳转至断点(exitCurrentThread)
Spring Boot项目使用了spring-boot-devtools工具且在Eclipse中Debug调试会自动跳转到这个方法: public static void exitCurrentThr ...
随机推荐
- 【Android】Retrofit源码学习
使用Retrofit的流程 通过Builder创建Retrofit对象: Retrofit retrofit = new Retrofit.Builder().baseUrl("" ...
- JavaScript表单序列化的方法详解
本文介绍下,在javascript中实现表单序列化的方法,通过实例加深理解,有需要的朋友参考下吧. 在JavaScript中,可以利用表单字段的type属性,连同name和value属性一起实现对表单 ...
- 【Weiss】【第03章】练习3.25:数组模拟队列
[练习3.25] 编写实现队列的例程,使用 a.链表 b.数组 Answer: 在这章一开头就已经写了个链表的队列例程了,所以实际上只要做b小题就可以. 数组模拟队列和链表的两点小不同是: ①.数组空 ...
- MySQL:GROUP_CONCAT函数的使用
原文链接 GROUP_CONCAT功能 将某个字段的值拼接成字符串. 举例使用 先看一下原始数据表 执行下面sql语句 SELECT `cid`,GROUP_CONCAT(mid) AS `mids` ...
- spring的ioc依赖注入的三种方法(xml方式)
常见的依赖注入方法有三种:构造函数注入.set方法注入.使用P名称空间注入数据.另外说明下注入集合属性 先来说下最常用的那个注入方法吧. 一.set方法注入 顾名思义,就是在类中提供需要注入成员的 s ...
- Java并发编程之支持并发的list集合你知道吗
Java并发编程之-list集合的并发. 我们都知道Java集合类中的arrayList是线程不安全的.那么怎么证明是线程不安全的呢?怎么解决在并发环境下使用安全的list集合类呢? 本篇是<凯 ...
- Nginx.pid打开失败以及失效的解决方案
在启动nginx的时候报了如下的错误: 其意思是没有该文件或者是目录,通过查看之后发现确实没有该目录 cd /var/run/nginx 于是重新创建了这个文件,使用如下命令: mkdir / ...
- Colab笔记本能用英伟达Tesla T4了,谷歌的羊毛薅到酸爽
谷歌出品的Colab笔记本,机器学习界薅羊毛神器,如今又有了新福利: 连英伟达最新一代机器学习GPU:Tesla T4都能免费蹭,穷苦羊毛党也顿时高端了起来. 英伟达的Tesla T4,是去年秋天才发 ...
- 如何使用Java中的Enum类
Java1.5 中出现了枚举类型.当一个值都在一个固定的范围内变化,那就可以使用 enum 类型来定义.比如说,一周有七天,一年有四季. 没有枚举类的时候,我们用常量来定义一组范围值的: public ...
- Collections.sort详解
Collections.sort(list, new PriceComparator());的第二个参数返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序. Com ...