0

我有很少的 sql 查询,当用户登录时它执行得很好,因为那时用户将有一些 id,但是当客人点击这些链接时,我收到错误并且显示完整的 sql 查询,这是一个很大的安全风险。我想禁用错误报告,所以我通过 whm 禁用了 php.ini 中的错误报告

我正在寻找一些方法来禁用完全错误,当我想要时。我知道它可以通过在 mysql 查询的开头添加 @ 来完成,但我不想在所有查询中添加 @ 我正在寻找一个简单的解决方案,通过 whm 只是禁用并启用喜欢。

这是我的错误

 QL query error!
Error infomation:
[SQL]
 select * from `blacks` where bid= and uid=21329 

 [Error]
You have an error in your SQL syntax; check the manual that corresponds to your        MySQL      server version for the right syntax to use near 'and uid=21329' at line 1
4

3 回答 3

3

要禁止错误显示在 PHP 脚本的输出中,请将display_errors设置为php.inioff0php.ini中。您可以通过查看phpinfo找到正在加载的 php.ini 文件。

只需创建一个新的 PHP 脚本并将以下行放入该脚本中,然后运行它,您将看到当前加载的所有 PHP 配置指令的值:

<?php phpinfo(); ?>

但是,您真的不想完全禁用error_reporting在生产中记录错误并保持 display_errors 关闭是很重要的记录错误很重要,因为它将帮助您识别何时发生错误。否则,您将永远不知道代码何时出现问题,因此无法修复它。

强烈建议不要使用错误控制运算符 @,因为它在语义上等同于禁用 error_reporting,这意味着您永远不会知道您的脚本是否因致命错误而死。


还需要注意的是,您必须重新启动 PHP 才能使对 php.ini 所做的更改生效。例如,如果您将 *mod_php* 与apache httpd一起使用,则意味着完全重新启动您的 Web 服务器。这可能需要完全停止然后重新启动httpd备份(因为在某些设置中使用 restart 命令可能不会这样做)。如果您使用的是 CLI 或 CGI,则应在每次请求时自动重新启动该过程。一些 fcgi/mod_fcgid 设置和 FPM 设置可能需要确保所有 fastcgi 工作人员完全停止并由其父进程重新生成。

于 2012-12-08T10:49:07.133 回答
0

您可以使用 error_reporting(0) 禁用错误报告;

于 2012-12-08T10:50:09.810 回答
0

您需要在 php.ini 中将 display_errors 指令设置为 off。您的错误应该写入日志,而不是完全关闭错误报告。

于 2012-12-08T10:52:48.853 回答