尝试以下代码,但导致异常 - 远程接口拒绝的SQLSTATE [HY000] [335544421]连接:
try {
$dbh = new PDO("firebird:dbname=localhost/3050:empty", "SYSDBA", "masterkey");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sth = $dbh->query('SELECT idmspos, idmsqnt, cdmsval from svc$dms');
$sth->setFetchMode(PDO::FETCH_ASSOC);
while($row = $sth->fetch()) {
echo $row['idmspos']." ".$row['idmsqnt']." ".$row['cdmsval']."<br>";
}
$dbh = null;
}
catch(PDOException $e) {
$dbh = null;
echo $e->getMessage();
}
规格:
Linux 3.2.0-4-686-pae #1 SMP Debian 3.2.65-1+deb7u1 i686 GNU/Linux
PHP 5.6
php5-interbase
Firebird 3 from official site. Server is worked, can connect to him from local and remote machine.
答案 0 :(得分:9)
查找firebird.conf
,取消注释(如果使用fbclient 2.x)并更改以下参数以禁用WireCrypt并为旧版身份验证设置更高的优先级:
WireCrypt = Disabled
AuthServer = Legacy_Auth, Srp, Win_Sspi
AuthClient = Legacy_Auth, Srp, Win_Sspi
答案 1 :(得分:0)
对于提问者来说可能有点晚了,但“远程接口拒绝连接”可能仍然是当前话题,因为 firebird api 从 debian 8 到 9/10 发生了变化。
问题还取决于使用哪个 interbase/firebird-client-library。虽然在 debian 8 中,Firebird API 版本 2.5 中有 libfbclient2,但从 Debian 9 开始,这个 libfbclient2 已升级到 Firebird API 3.0。 libFBclient 是连接到 Firebird / Interbase-Servers 的客户端库。
如果现在你有一个旧版本的服务器,就像我们一样,即 2012 年的 Interbase XE3,3.0 版中的新 firebird-library 不能再连接到这个旧的服务器类型,而以前的 library 2.5 可以.
因此,当从 Debian 8 迁移到 Debian 10 时,我们的一种解决方案是将旧版本的 libfbclient2 从 debian 8 安装到新的 Debian 10 系统,然后安装更高语言的客户端,例如php7.3-interbase。
以这种方式安装系统时,php 7.3. interbase 客户端显示连接旧的 interbase 服务器没有问题。
这里有一个关于如何将 libfbclient2(来自 debian 8 的 api 版本 2.5)安装到新的 debian 9/10 系统并与 php7.3 一起使用的小说明:
首先,卸载所有高级语言客户端包,如 php7.3-interbase 和所有 firebird common/client/server-stuff。
然后下载并首先通过 dpkg 安装调用来自 debian 8 的旧 libfbclients。它们可以在 hier 中找到: https://packages.debian.org/jessie/libfbclient2
然而,这个包依赖于以下 4 个包:
multiarch-support
libc6
firebird2.5-common
firebird2.5-common-doc
虽然前两个版本已经在 Debian 10 中可用并且可以直接从那里安装,但后两个需要从 debian 8 jessie - 存档下载并且需要先安装。
答案 2 :(得分:-2)
您需要按如下方式更改Firebird服务:
然后单击“重新启动服务”
现在,您可以在Firebird 2.1的情况下成功连接firebird。