我已经成功编写了扩展PDO的OOP类,一切似乎都按预期工作!但是我很困惑,如果提供了错误的db user / pass组合或名称,它会抛出异常,但是如果“db host”不正确或无效,它会抛出异常警告,为什么会这样?
[2013年12月11日14:37:01 UTC] PHP警告:PDO :: __ construct(): php_network_getaddresses:getaddrinfo失败:名称或服务没有 已知的 /home/sdrop/public_html/includes/modules/monetarysoft/ttbs.php上线 15
答案 0 :(得分:2)
如果你指定一个无效的主机名,让我们说“ThisHostDoesPropablyNotExist.com”还有另一个内部函数 - 即 getaddrinfo 参与检查主机名。
警告意味着PHP无法首先查找主机名。如果您只使用错误的组合,则可以访问服务器(因此查找主机地址没有问题),因此getaddrinfo不会抛出任何错误。
映入眼帘,
答案 1 :(得分:2)
根据要求移动回答:
这是因为您仍然提供有效的主机名,但没有运行任何服务。
问题是输入是一个字符串,所以几乎所有主机名的输入都是有效的,即:localhost或127.0.0.1或blah.blah.com等等,所以它不能在输入时失败。
只有在提供的主机上没有运行服务时才会失败,这就是为什么它会警告您没有服务正在运行然后抛出异常。