Почему мой сервер не подключается к удаленному серверу MSSQL с помощью PHP mssql_connect?

Мне пришлось переместить приложение, которое мы написали для клиента, на новый сервер, и удаленное соединение, которое я инициировал с помощью PHP mssql_connect, перестало работать. Я заметил, что PHP не был скомпилирован с помощью mssql, поэтому я попросил администратора сервера установить его. Я могу убедиться, что он теперь установлен с помощью информации PHP, но теперь я получаю постоянную ошибку «Невозможно подключиться к серверу» от mssql_connect.

Вот очень простой PHP-скрипт, который я запускаю:

$myServer = "myserver.com:5000";
$myUser = "myusername";
$myPass = "mypassword";

$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer. Error: " . mssql_get_last_message());

Я подтвердил, что учетные данные все еще верны, но по какой-то причине кажется, что mssql_connect просто не делает этого. Мне интересно, есть ли что-то, что администратор забыл сделать, установив расширение и FreeTDS. Любые указатели с благодарностью! :)

ЗАДАЧА РЕШЕНА!!!

После всего этого оказалось, что это номер версии протокола FreeTDS, указанный в /usr/local/freetds/etc/freetds.conf, строку номер 13 пришлось раскомментировать. Вот оно! :)


person Nathan Pitman    schedule 02.06.2011    source источник
comment
Он выходит из строя сразу или после некоторого тайм-аута? Точное сообщение об ошибке? Можете ли вы подключиться из некоторых инструментов SQL?   -  person gbn    schedule 02.06.2011
comment
может быть проблема типа брандмауэра/маршрутизации/dns. Вы можете подключиться к этому хосту/порту (например, с помощью telnet) с вашего хоста php?   -  person Mat    schedule 02.06.2011
comment
Я настроил FreeTDS для регистрации ошибок, и он сообщает о неожиданном EOF с сервера ... не уверен, что это «мой сервер» или удаленный «SQL-сервер». Кстати, удаленный сервер - SQL Server 2000.   -  person Nathan Pitman    schedule 02.06.2011
comment
Я нашел проблему, см. отредактированный вопрос для решения, по какой-то сумасшедшей причине я пока не могу ответить на свой вопрос ... очевидно, в значительной степени n00b. :)   -  person Nathan Pitman    schedule 02.06.2011


Ответы (2)


После всего этого оказалось, что это номер версии протокола FreeTDS, указанный в /usr/local/freetds/etc/freetds.conf, строку номер 13 пришлось раскомментировать. Вот оно! :)

person Nathan Pitman    schedule 06.06.2011

Есть большая вероятность, что удаленные подключения отключены на сервере, на котором он установлен. Вы проверили, действительно ли вы можете удаленно подключиться к серверу БД с IP-адреса веб-сервера, который пытается подключиться к нему? Обычно, по крайней мере, в большинстве схем виртуального хостинга, сервер базы данных принимает соединения только с локального хоста. Вам нужно будет добавить IP-адрес веб-сервера в белый список (обычно в конфигурации сервера), чтобы разрешить подключения извне.

person cthulhu    schedule 02.06.2011
comment
Привет, спасибо за предложение. Удаленный сервер, к которому я подключаюсь, уже имеет IP-адрес моего сервера в белом списке. Мне интересно, есть ли какой-то параметр, который был упущен с точки зрения «включения» FreeTDS или аналогичного. :( - person Nathan Pitman; 02.06.2011