当我在php.ini文件中添加“ display_errors = off”时,仍然显示一些php错误。
在向我的php.ini文件中添加display_errors = off之前,我获得了完整路径等信息(很多信息。用户不希望看到)。在我的php.ini文件中关闭display_errors =后,我得到的错误信息要少得多。显示,但是我仍然收到以下错误:“对不起,有一个错误:用户'username'@'localhost'对数据库'mydatabase'的访问被拒绝。“对不起,有一个错误”是我的自定义connect_error死文本,这就是我想要显示的全部,但是呈现我想要避免的用户名和数据库。是否需要在php.ini文件中添加其他内容,或者这可能是使用connect_error和我的php代码中死了吗?我的LAMP网站主机不允许我访问.htaccess和其他一些配置文件。但是我确实有自己的php.ini文件可以编辑。
一旦我以我想要的方式运行display_error,我想将log_errors和error_log添加到我的php.ini文件中,以便我可以记录php错误进行调试。
这是我在php.ini中的一行:
display_errors = off
这是我的php文件中的检查连接代码(以防万一):
if ($con->connect_error) {
die("Sorry, there was an error: " . $con->connect_error);
}
我希望php.ini中的display_errors = off可以在执行期间为我提供空白屏幕,或者仅显示“对不起,有一个错误”,这是我的偏爱。任何意见的建议表示赞赏。谢谢。
更新:阅读我收到的对原始帖子的评论后,我试图修改一些代码并添加一些代码。
我在建立mysql数据库连接之前添加了以下代码行,以便在我的php错误日志中报告mysql错误:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
然后我将以下行添加到php.ini中,以便不显示所有错误,而是将其写入php错误日志:
error_reporting = E_ALL
display_errors = off
log_errors = on
error_log = ../logs/my_php_error_log
我完全注释掉了我的“ $ con-> connect_error”代码(如下),因为所有的mysql / php错误现在都被记录到了文件中,我经常检查该文件。注意:如果不检查连接不是一个好的习惯,请告诉我
/*
if ($con->connect_error) {
die("Sorry, there was an error.");
}
*/
所有上述更改都是基于我对评论的了解,对原始帖子的了解,以及对我所发表的评论中提供的链接所读内容的更深入了解。谢谢。
答案 0 :(得分:0)
如果您不希望呈现用户名和数据库,只需从自定义消息中删除$con->connect_error
。
if ($con->connect_error) {
die("Sorry, there was an error.");
}
答案 1 :(得分:-1)
您的代码逻辑表明,无论ini设置如何,它都应显示错误消息。 It is never a good idea to die in your code with an error message. PHP具有非常好的错误报告和逻辑功能,您无需自行死亡或显示它们。
首先,如果您使用MySQLi,则应该enable exception mode in your code:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
不要捕获您的错误,也不要自己显示它们。如果将配置切换为display_errors=On
,并且错误报告功能也已打开,则您将在浏览器中看到错误。
如果您确实要显示自己的错误消息,则应使用exceptions。
if ($con->connect_error) {
throw new \Exception("Sorry, there was an error: " . $con->connect_error);
}
您还可以使用trigger_error
手动触发PHP错误。
if ($con->connect_error) {
throw new \Exception("Sorry, there was an error: " . $con->connect_error, E_USER_ERROR);
}
最糟糕的选择是die
。如果必须die
,则可以检查是否首先打开了错误显示。
if ($con->connect_error) {
if(ini_get('display_errors')){
die("Sorry, there was an error: " . $con->connect_error);
}
}