【发布时间】:2017-11-29 21:45:59
【问题描述】:
我正在尝试使用 php pdo 连接到外部 firebird 数据库。 我收到消息:
SQLSTATE[HY000] [335544721] 无法完成对主机“192.168.0.10”的网络请求
我的firebird服务器64位windows和firebird版本是64bit version 2.1 我可以使用 php pdo 从该服务器本地连接到 firebird。
我的网络服务器是 64 位 linux 服务器,我无法连接到 firebird,但我可以使用 isql-fb 实用程序连接。
我已经用谷歌搜索了一个星期,但我的结果为零:(
提前致谢。
我的问题被标记为重复,但我的问题不同。我可以连接控制台,我无法连接 php。但我可以从 localhost 连接 php。
$dsn = 'firebird:DataSource=192.168.0.10;Database=C:\Ofisnet\Data\SAV2012.FDB;charset=UTF8;';
echo $dsn . '<br>';
$userName = "SYSDBA";
$password = "password";
$conn = new SafePDO($dsn, $userName, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
error_reporting(E_ERROR);
【问题讨论】:
-
您确定 firebird 服务器位于 192.168.0.10 IP 上并且没有防火墙规则阻止通信吗?您确定您的网站和数据库在同一个 IP 子网中吗?所以网站也是 192.168.0.x 和 - 那是同一个 192.168.0.x 子网,。不是另一个具有相同地址的子网吗?您确定目标服务器上的 firebird 正在侦听您的 PHP 连接到的同一端口吗?基本上,它与 Firebird 无关——它与通用 TCP/IP 诊断有关。拿 WireShark 或其他显示器检查连接信号是否传播
-
tcp traceroute 也可能有帮助,来自 PHP 机器。但它也适用于 UNIX,WinXP SP3 禁止它。就像en.wikipedia.org/wiki/Layer_four_traceroute - 你必须了解 PHP 使用哪个端口进行连接尝试,firebird 服务器正在侦听哪个端口 - 它们应该匹配。然后你 tcp-traceroute 将 TCP 连接连接到从 PHP 机器到 Firebird 机器的相同端口号,并查看连接无法传播的位置。
标签: php pdo tcp firebird tcp-ip