10

尝试下面的代码,但会导致异常 - 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.
4

3 回答 3

15

查找firebird.conf,取消注释(如果使用 fbclient 2.x)并更改以下参数以禁用 WireCrypt 并为旧式身份验证设置更高的优先级:

WireCrypt = Disabled
AuthServer = Legacy_Auth, Srp, Win_Sspi
AuthClient = Legacy_Auth, Srp, Win_Sspi
于 2015-05-22T13:00:47.253 回答
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 无法再连接到这种旧服务器类型,而之前的库 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。它们可以在下面找到: https ://packages.debian.org/jessie/libfbclient2

但是,此包依赖于以下 4 个包:

multiarch-support
libc6
firebird2.5-common
firebird2.5-common-doc

虽然前两个是 Debian 10 中已经可用的合适版本并且可以从那里直接安装,但后两个需要从 debian 8 jessie - 存档下载并需要先安装。

于 2021-03-02T08:16:37.010 回答
-2

您需要按如下方式更改 Firebird 服务:

  1. 安装火鸟

  2. 去搜索服务->火鸟

  3. 右键单击 Firebird->Properties->LogOn-> 并勾选选项为“允许服务与桌面交互”的复选框

  4. 然后点击重启服务

    如果是 Firebird 2.1,您现在可以成功连接 firebird。

于 2017-01-21T12:17:31.973 回答