gpt4 book ai didi

php - 测试 PDO 错误处理 : How to Force a Database Connection Error?

转载 作者:行者123 更新时间:2023-11-28 21:01:50 26 4
gpt4 key购买 nike

有没有什么方法可以强制出现数据库连接错误,以便我可以测试我的 PHP 代码的错误处理?我们知道,对于 PDO,错误处理不当可能会导致在屏幕上显示完整的回溯跟踪,可能会泄露数据库的用户名和密码(如 php.net » pdo connections 上的警告)。

我一直在试图有意强制发生这种情况(通过重命名为虚构的数据库表等),但我还没有得到结果。还有其他模拟数据库问题的方法吗?

我在运行 Apache 的共享主机上具有 Cpanel 访问权限。

最佳答案

只需提供不正确的凭据。重命名表几乎没有帮助,因为连接中不涉及表。改为更改 hostusernamepassword

improper error handling can cause a full back trace to be displayed on-screen,

这是一个非常恰当的问题。

不过,解决方法很简单

  • 为了避免在屏幕上显示任何错误,只需告诉 PHP 这样做,将 display_errors 配置指令设置为 0。
  • 为了避免将数据库凭据泄漏到堆栈跟踪中(即使不显示,进入日志也好不了多少),只需捕获异常并抛出一个全新的异常,因为它会有效地删除堆栈跟踪并且创建一个新的空的,就像我的文章中显示的那样,How to connect with PDO

基本上你需要

try {
$pdo = new \PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}

关于php - 测试 PDO 错误处理 : How to Force a Database Connection Error?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58204246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com