作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的 MySQL 数据库中有太多主机 PDO 异常:
exception 'PDOException' with message 'SQLSTATE[HY000] [1129] Host
'[IP ADDRESS]' is blocked because of many connection errors; unblock
with 'mysqladmin flush-hosts'' in /var/www/libs/Database.php:15
我理解这个错误,但真正的问题出在将数据库名称、登录名和密码转储到控制台的堆栈跟踪中:
Stack trace:
#0 /var/www/libs/Database.php(15): PDO->__construct('mysql:host=conf...',
'[db name]', '[db password]...', Array)
由于这是一个 AJAX 请求,它会转储到控制台浏览器中,这显然是一个问题。
如何避免这种情况发生?我是否错误地配置了 PHP?
最佳答案
As this is an AJAX request, it dumps into the console browser
当然,PHP(与其他服务器端语言一样)在另一台计算机上执行,无法访问浏览器的控制台。很可能,您的 PHP 和 JavaScript 都没有设计为优雅地处理错误情况。一些提示:
始终在您的生产环境中将 display_errors
设置为 false。确保记录错误消息。
调整您的服务器端代码,使其即使在数据库关闭时也能生成有效输出。例如,如果脚本应该生成 JSON,即使出现错误,它也应该发送 JSON 数据。为此:
PDOException
发送 JSON 数据通知出现错误,例如:
{"status": "error", "info": "Database is down"}
调整您的客户端代码以处理 AJAX 响应中的任何 错误,包括带有 status=error 的正确 JSON 和缺少正确的 JSON。
关于php - 如何防止 PDO 错误上的密码转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002636/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!