Проблемы с подключением к Interbase на удаленном сервере с использованием php

Попытка установить соединение с базой данных между сервером Linux / Ubuntu (клиентом) и сервером Windows (хостом), используя приведенный ниже код, но по какой-то причине это не удается. IP-адрес в порядке (пингуется нормально), порт 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." Однако имя пользователя и пароль были трижды проверены несколько раз и должно быть хорошо.


person mephisto73    schedule 17.03.2018    source источник
comment
очевидно, что IP-адрес замаскирован в примере кода.   -  person mephisto73    schedule 17.03.2018


Ответы (2)


У меня такая же ошибка при попытке подключиться к межбазовой базе XE7 (V12) с помощью php ibase_connect. Мой межбазовый сервер размещался на машине с Windows 10.

Убедитесь, что библиотека php / interbase установлена ​​и отображается в результате get_loaded_extensions().

В моем случае проблема была в дайджесте межбазовых паролей. Для более старой базы данных используется дайджест des-crypt, а для более новой версии - дайджест sha-1. Я просто изменил дайджест пароля на «des-crypt», и все заработало. Вот шаги, чтобы изменить дайджест пароля для interbase с помощью isql.exe.

Найдите файл admib.ib здесь C:\ProgramData\Application Data\Embarcadero\InterBase\gds_db или в папке c: \ program files и следуйте инструкциям.

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)

Снова обратно в ша-1

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

И это все. Обратите внимание, я впервые работал с php и interbase. Прошу прощения за недостающие детали или опечатки.

person uzzol ali    schedule 10.10.2018

Может быть, обратная косая черта должна быть экранирована в C: \\ folder \\ DBFILE.IB, и что в противном случае C: \ folder \ DBFILE.IB переводится в путь для мусора, который IBASE не находит и дает скорее неточное сообщение об ошибке?

person Gnudiff    schedule 19.03.2018