sybase — PHP sql везде проблемы с подключением

Я хочу получить доступ к удаленной базе данных Sybase с помощью PHP и модуля SQLANYWHERE. Я установил его и проверил, что он работает правильно так:

if( ! extension_loaded('sqlanywhere') )  print("<b>SQL ANYWHRE not available</b>". "\xA") ;

Затем я попытался получить доступ к DB-серверу вот так:

$host = 'xxx.xxx.xxx.xxx';
$port = xxxx;
$waitTimeoutInSeconds = 1;
if($fp = fsockopen($host,$port,$errCode,$errStr,$waitTimeoutInSeconds)){
print("<b> SQL Verbindung established</b>". "\xA");
} else {
print("<b>keine SQL not established</b>". "\xA");
}
fclose($fp);

который тоже работал.
Но я просто не могу подключиться, вот моя строка подключения:

$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host‌​=".$server.";port=".$port.")";
$conn=sasql_connect($connString);

все значения правильно настроены, так как это сработало с первой попытки выше.

Но когда я пытаюсь загрузить свою страницу, я всегда получаю эту ошибку:

Warning: sasql_connect(): SQLAnywhere: [-832] Verbindungsfehler: Fehler in den TCPIP Portoptionen in C:\xampp\htdocs\index.php on line 59
sasql_connect failed
Fatal error: Call to a member function close() on boolean in C:\xampp\htdocs\index.php on line 75

первая строка означает «Ошибка подключения: ошибка в параметрах порта TCPIP»

РЕДАКТИРОВАТЬ: Это все разные connStrings, которые я уже пробовал:

$connString = "Uid=".$username.";Pwd=".$password.";Server=".$serverName.";host‌​=".$server.":".$port.")";
$connString = "Uid=".$username.";Pwd=".$password.";host‌​=".$server.":".$port.")";
$connString = "Uid=".$username.";Pwd=".$password.";host‌​=".$server.";port=".$port;
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host‌​=".$server.":".$port.")";
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host‌​=".$server."Port=".$port.")";

РЕШЕНИЕ

Я обнаружил, что для установки SQL Anywhere, необходимой для модуля PHP, есть инструмент cmdline, который называется dbping включен. скопировав мою строку из моего текстового редактора в строку cmdline, я заметил там, где в моей строке были непечатные символы, которые не удалось разрешить cmdline, и напечатал их как «??». после переписывания части, где были символы, соединение работает. убей меня … 2 дня за это.

0

Решение

Ошибка довольно очевидна; Что в строке 59? Это эта строка:

$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host‌​=".$server.";port=".$port.")";

По сути ваш порт не правильно. Вы также пытаетесь позвонить close() метод объекта, который не существует.

Я прочитал некоторые документы (http://dcx.sybase.com/1200/en/dbadmin/links.html) и похоже, что ваша строка должна выглядеть так:

$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host‌​=".$server.":".$port.")";

Обратите внимание, что это добавляет порт к хосту (host: 1337), вместо того, чтобы дать ему явный port ключ.

2

Другие решения

Я думаю, что это проблема с подключением к базе данных.
Просто попробуйте запустить базу данных sqlanywhere следующим образом:

./bin64/dbeng17 -x tcpip /path/to/database/database.db

Этот триггер «-x tcpip» важен для соединения php с базой данных.

0

По вопросам рекламы [email protected]