【问题标题】:Problems connecting to Interbase on remote server using php使用 php 在远程服务器上连接到 Interbase 的问题
【发布时间】:2018-10-10 12:53:28
【问题描述】:

尝试使用以下代码在 Linux/Ubuntu 服务器(客户端)和 Windows 服务器(主机)之间建立数据库连接,但由于某种原因失败。 ip地址是ok的(ping it ok),3050端口是开放的,用户名和密码也是正确的,请问是什么问题?下面的代码返回“连接失败!!!”。是的,安装了 php/interbase 库。

$db_path = '192.*.*.*:C:\folder\DBFILE.IB';
$username = 'USER';
$password = 'password';

$dbh = ibase_connect($db_path, $username, $password) or die('Connection failed!!!');

只是一个更新。事实证明连接正常,问题与用户名和/或密码有关。 ibase_errmsg()返回以下错误 “您的用户名和密码未定义。请让您的数据库管理员设置 Firebird 登录。” 但是,用户名和密码已经过多次检查,应该没问题。

【问题讨论】:

  • 很明显ip在示例代码中被屏蔽了。

标签: php interbase


【解决方案1】:

我在尝试使用 php ibase_connect 连接到 interbase XE7(V12) 时遇到了同样的错误。我的 interbase 服务器托管在 Windows 10 机器上。

确保 php/interbase 库已安装并列在get_loaded_extensions() 的结果中。

就我而言,问题出在 interbase 密码摘要中。对于较旧的 interbase,它使用“des-crypt”摘要,对于较新版本,它使用“sha-1”摘要。我只是将密码摘要更改为“des-crypt”,然后它就起作用了。 以下是使用 isql.exe 更改 interbase 密码摘要的步骤。

在这里 C:\ProgramData\Application Data\Embarcadero\InterBase\gds_db 或 c:\program 文件下找到 admib.ib,然后按照说明进行操作

1. SQL> CONNECT "C:\Program Files (x86)\borland\interbase\admin.ib" (hit enter)
2.CON> user 'SYSDBA' password 'masterkey';

3.SQL> ALTER DATABASE SET PASSWORD DIGEST 'DES-CRYPT';

4.SQL> UPDATE USERS SET PASSWORD_DIGEST = 'DES-CRYPT' WHERE USER_NAME='sitesync';

5.SQL> COMMIT;

然后打开 gsec.exe 并输入这些命令

 gsec -user sysdba -password masterkey (hit enter)
 modify sitesync -pw newpassword (hit enter and password changed)

再次回到 sha-1

6. SQL> ALTER DATABASE SET PASSWORD DIGEST 'SHA-1';
7 commit;

就是这样。请注意,我第一次使用 php 和 interbase。请原谅我遗漏的任何细节或拼写错误。

【讨论】:

    【解决方案2】:

    是否可能需要将反斜杠转义到 C:\\folder\\DBFILE.IB 中,否则 C:\\folder\\DBFILE.IB 会被转换为垃圾路径,而 IBASE 找不到并且给出了相当不精确的错误消息?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多