【发布时间】:2015-08-04 02:36:19
【问题描述】:
尝试以下代码,但导致异常 - 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.
【问题讨论】:
-
您使用的是哪个
libfbclient.so?来自 Firebird 3 的那个,还是来自 Firebird 2.5 或更早版本的那个?如果您使用 2.5 或更早版本的版本,则需要将 Firebird 3 配置为接受不安全的连接(尽管我相信这会产生与您消息中的错误不同的错误)。 -
@MarkRotteveel 我刚刚下载并安装了 Firebird 3 服务器,然后安装了 php5-interbase 包,没有采取任何额外的操作。目前已搜索所有文件
libfbclient.so并将其替换为服务器文件夹/opt/firebird/lib中的文件。错误重复出现。我可以在哪里允许接受不安全的连接?在firebird.conf中找不到相同的参数。之前没有安装过其他版本的 firebird。 -
我相信是设置
WireCrypt(默认为Required),改为Enabled或Disabled。但是,如果您已经在使用 Firebird 3 中的 libfbclient.so,则无法解决此问题。 -
@MarkRotteveel 在
firebird.conf中找到此字符串。默认情况下已注释。取消注释并更改为WireCrypt = Disabled,取消注释并更改AuthServer = Legacy_Auth, Srp, Win_Sspi和AuthClient = Legacy_Auth, Srp, Win_Sspi。现在工作。谢谢。 -
考虑用这些信息回答你自己的问题;它也可能对其他人有所帮助!
标签: php linux pdo firebird firebird-3.0