尝试下面的代码,但会导致异常- 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.
找到firebird.conf
,取消注释(如果使用fbclient 2.x)并更改以下参数以禁用WireCrypt并为旧身份验证设置更高的优先级:
WireCrypt = Disabled
AuthServer = Legacy_Auth, Srp, Win_Sspi
AuthClient = Legacy_Auth, Srp, Win_Sspi
可能对提问者来说有点晚了,但是"连接被远程接口拒绝了"可能仍然是当前的主题,因为firebird API从debian 8更改为9/10。
问题还取决于使用哪个interbase/firebird-client库。虽然在debian 8中Firebird API版本2.5中有libfbclient2,但从debian 9开始,这个libfbclient2被升级为Firebird API 3.0。libFBclient列出连接到Firebird/Interbase-Servers的客户端库。
如果,现在,你有一个旧版本的服务器,如我们所做的,即Interbase XE3从2012年开始,新的firebird-library在3.0版本不能再连接到这个旧的服务器类型,而以前的库2.5可以。
因此,当我们从Debian 8迁移到Debian 10时,我们的一个解决方案是从Debian 8安装旧版本的libfbclient2到新的Debian 10系统,然后,安装更高语言的客户端,例如php7.3-interbase。
以这种方式安装系统时,php 7.3。Interbase客户端显示连接旧Interbase服务器没有问题。
下面是一个关于如何在新的debian 9/10系统上安装libfbclient2 (api版本2.5)以及如何在php7.3上使用它的小说明:
首先,卸载所有高级语言客户端包,如php7.3-interbase和所有firebird common/client/server-stuff。
然后通过dpkg从debian 8调用旧的libbclient下载并首先安装。他们可以在下面找到:https://packages.debian.org/jessie/libfbclient2
但是,这个包依赖于以下4个包:
multiarch-support
libc6
firebird2.5-common
firebird2.5-common-doc
前两个在Debian 10中已经有合适的版本,可以直接安装,后两个需要从Debian 8的jessie - archive下载,需要先安装。
您需要按如下方式更改Firebird服务:
- 安装火鸟
去搜索服务->火鸟
右键单击Firebird->Properties->登录→选项为"允许服务与桌面交互"
,然后点击重启服务
在firebird 2.1的情况下,你现在可以成功连接firebird。