一个php log_error问题

2013-09-09 14:00:35 +08:00
 nilai
php.ini如下 设置
log_errors = On
error_log = /tmp/log.txt
error_reporting=E_ALL


现假设有如下PHP代码
<?php
@asdfasdfasdfasdfasdfasdfasdfasdf();
?>

现在这样子是不保存错误记到/tmp/log.txt

现在要求不改PHP代码的前提下怎么把错误记录记到/tmp/log.txt中
2915 次点击
所在节点    PHP
5 条回复
moro
2013-09-09 17:00:36 +08:00
会记录到错误的行数,在文件中。
shiny
2013-09-09 17:05:44 +08:00
@ 错误抑制符的作用等于把这一行的 error_reporting 变成 0。

如果你要跟踪此类问题,你可以写个 error handler处理文件并在 php.ini 里 auto_prepend_file 加入这个文件。在错误处理程序里也会收到抑制过的错误。
sharmy
2013-09-09 17:22:05 +08:00
貌似必须改代码哦:
手册上写的很清楚:目前的“@”错误控制运算符前缀甚至使导致脚本终止的严重错误的错误报告也失效。这意味着如果在某个不存在或者敲错了字母的函数调用前用了“@”来抑制错误信息,那脚本会没有任何迹象显示原因而死在那里。
holystrike
2013-09-09 17:27:59 +08:00
必须把@去掉
加@是很不好的书写习惯,必须废止的
picasso250
2013-09-13 11:07:29 +08:00
1. 把@去掉。
2. 设置error_handler 如
http://gist.github.com/picasso250/6546398

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/81839

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX