防止PHP打印错误堆栈

时间:2012-05-08 05:50:05

标签: php

如果存在致命错误 - 比如无法连接到数据库,则PHP会在浏览器中打印错误堆栈,如下所示 -

mysql_pconnect() [<a href='function.mysql-pconnect'>function.mysql-pconnect</a>]: Lost connection to MySQL server at 'reading initial communication packet', system error: 111

#0 /var/www/platform/db/connection.php:12 mysql_pconnect('127.0.0.1','root','password')
#1 /var/www/platform/db/front_page.php:10 open_db_connection()
#2 /var/www/platform/services/front_page_services.php:7 find_top_courses()
#3 /var/www/platform/inc/main.php:75 get_top_courses()
#4 /var/www/index.php:198 F3::run()

如何防止这种情况? error_reporting中的php.ini已设为0display_errors为关闭。

3 个答案:

答案 0 :(得分:1)

确保没有脚本在运行时或通过display_errors启用.htaccess

如果仍然无效,请确保修改了正确的php.ini,并在进行任何更改后重新启动Apache / IIS / nginx。如果仍然失败,请加载phpinfo()并确保更改正在进行。

另外,请务必关闭html_errors。以防脚本偷偷摸摸改变你的error_reporting,并向公众显示你的堆栈跟踪。

答案 1 :(得分:1)

要么你正在编辑错误的php.ini,要么在其他地方(.htaccess文件,用户级别php.ini或运行时的脚本中)返回设置。请参阅phpinfo()以帮助您找到php.ini文件,编辑它,然后重新启动。

你只需要关闭display_errors。

答案 2 :(得分:-2)

您可以在引发错误的函数之前使用“@”。

“@”将使您的函数可能引发的任何php错误无声。

http://php.net/manual/en/language.operators.errorcontrol.php