Подключение к SQL-серверу с использованием PHP

Я пытаюсь подключиться к удаленному серверу Microsoft SQL, используя PDO. Перед установкой необходимых драйверов (SQLSRV30) мой раздел команд configure phpinfo() показывает:

cscript /nologo configure.js "--enable-snapshot-build" "--without-dblib" "--without-pdo-dblib" "--without-pdo-mssql" "--with-pdo-oci=C:\php-

Я установил необходимые драйверы-> php_pdo_sqlsrv_54_ts.dll и php_sqlsrv_54_ts.dll (я использую PHP 5.4 с сервером APACHE). Я также внес необходимые изменения в файл php.ini-

extension=php_pdo_sqlsrv_54_ts.dll
extension=php_sqlsrv_54_ts.dll

Несмотря на это, когда я пытался подключиться к MSSQL Server, появляется ошибка undefined function mssql_connect() и неопределенная функция sqlsrv_connect().

На странице информации о php по-прежнему говорится, что -> «--without-pdo-mssql» в разделе команд configure.

Помогите, пожалуйста, где проблема!

PS:1) При использовании ODBC функция odbc_connect() работает нормально. 2) Я несколько раз обновлял Apache после редактирования. 3) Я сохранил файлы .ts в папке C:\wamp\bin\php\php5.4.12\ext


person Raghav Motwani    schedule 09.07.2015    source источник
comment
Появляется ли раздел sqlsrv в выводе phpinfo() после перезапуска apache? Если нет, проверьте, правильно ли вы отредактировали php.ini (путь также включен в вывод phpinfo()), и проверьте файл журнала php на наличие ошибок запуска.   -  person VolkerK    schedule 09.07.2015
comment
@VolkerK Нет, раздел sqlsrv не отображается в phpinfo(). Я проверил файл php.ini, упомянутый в phpinfo(); Это тот же файл, который я редактировал. Также в журнале ошибок не указано значение для локального и основного значения.   -  person Raghav Motwani    schedule 09.07.2015
comment
затем установите значение для error_log в php.ini и повторите попытку. например error_log=c:/temp/php_errors.log или другой допустимый путь к файлу. После перезапуска апача проверьте содержимое этого файла.   -  person VolkerK    schedule 09.07.2015
comment
@VolkerK в дополнение к sqlsrv_pdo я также сохранил php_pdo_mssql. могут ли они каким-либо изменением конфликтовать?   -  person Raghav Motwani    schedule 09.07.2015
comment
sqlsrv_pdo и php_pdo_mssql могут ли какие-либо изменения конфликтовать? - без понятия, но сомневаюсь.   -  person VolkerK    schedule 09.07.2015
comment
@VolkerK в файле error_log говорится: Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку «c:/wamp/bin/php/php5.4.12/ext/php_pdo_sqlsrv_54_ts.dll» — %1 не является допустимым приложением Win32. Что это значит?   -  person Raghav Motwani    schedule 09.07.2015
comment
@VolkerK Я использую 64-битный процессор   -  person Raghav Motwani    schedule 09.07.2015
comment
Я использую 64-битный процессор - интересно, вы также используете 64-битную версию apache и php?   -  person VolkerK    schedule 09.07.2015
comment
@VolkerK Да, похоже, phpinfo() говорит: Apache/2.4.4 (Win64) PHP/5.4.12   -  person Raghav Motwani    schedule 09.07.2015
comment
Тогда вам также понадобится 64-битная сборка расширения. Понятия не имею, откуда ты это взял.   -  person VolkerK    schedule 09.07.2015
comment
Тогда я должен переключиться на 32-битный apache? Я искал в Интернете, я не смог найти 64-битные файлы mssqlsrv. В любом случае, спасибо за помощь!   -  person Raghav Motwani    schedule 09.07.2015
comment
@VolkerK Проблема устранена. Большое спасибо вам!. Но на странице phpinfo() по-прежнему написано, что --without-pdo-mssql в разделе команд configure. Является ли эта вещь статической и не должна меняться при добавлении новых драйверов или я что-то упускаю.   -  person Raghav Motwani    schedule 09.07.2015
comment
--without-pdo-mssql — да, этот параметр использовался с командой configure при компиляции php. Это не изменится (пока вы не используете другую php5.dll)   -  person VolkerK    schedule 09.07.2015


Ответы (1)


Файлы php_sqlsrv_5x_ts.dll, предоставленные Microsoft, являются 32-разрядными. Они не будут работать для 64-битной сборки php.
Исходный код доступен по адресу https://github.com/azure/msphpsql, поэтому при необходимости вы сможете самостоятельно скомпилировать 64-разрядную версию.

person VolkerK    schedule 09.07.2015