Соединение между MSSQL и PHP 5.3.5 на IIS не работает - PullRequest
16 голосов
/ 24 марта 2011

Я недавно установил IIS, PHP 5.3.5 и MySQL, и все это заработало.

Затем у меня есть требования и к MS SQL, и то, что я считаю легкой задачей, теперьсводит меня с ума, и я не могу понять, как заставить его работать.

Согласно php_info() драйверы MS SQL не загружаются.

Я скачал php_mssql.dll и включил егов php.ini но это не сработало.Я узнал, что новая версия PHP использует другую DLL.Поэтому я скачал новый, поместил его в папку ext и обновил php.ini, но все равно не повезло.

php_info() все еще не показывает, что драйверы загружены.

Я собираюсь удалить IIS и PHP и установить Apache, который я установил ранее.

Этот вопрос - моя последняя попытка, кто-нибудь может помочь?

Ответы [ 2 ]

37 голосов
/ 25 марта 2011

Это отрывок из часто задаваемых вопросов для клиентов, которые я написал недавно, чтобы помочь нашим клиентам, специализирующимся на хостинге, запустить PHP с драйверами MS SQL.Он может дублировать некоторые знания, уже переданные в комментариях выше, но его полнота может также помочь другим, начиная с нуля:

Примечание: Очевидно, что номера версий PHP немного изменились с тех пор, как я написалэто, но общие принципы все еще применяются.


Предварительные условия установки: Собственный клиент SQL требуется для драйверов Microsoft для PHP для SQL Server:

Собственный клиент Microsoft SQL Server 2008 R2 X64 - для 64-битной Windows
или
Собственный клиент Microsoft SQL Server 2008 R2 X32 - для 32-битной Windows

Загрузите и установите драйвер Native Client, соответствующий вашей системе.

Драйверы PHP MS SQL:

Загрузите драйверы Microsoft для PHP для SQLСервер:

Драйверы Microsoft для PHP для SQL Server

Файл является самораспаковывающимся исполняемым файлом, поэтому просто используйте 7zip или WinRAR и распакуйтефайлы тo папка на ваш выбор.Теперь нам нужно решить, какой драйвер выбрать, который соответствует вашей установке PHP.

PHP 5.3.5 поставляется в четырех различных вариантах:

  • PHP 5.3.5 Non-threadsafe VC9
  • PHP 5.3.5 Non-threadsafe VC6
  • PHP 5.3.5 Threadsafe VC9
  • PHP 5.3.5 Threadsafe VC6

Чтобы указать, какую версию вы используетеустановили, откройте файл snapshot.txt, который находится в той же папке, что и php.exe, php-cgi.exe и т. д. Не используйте notepad.exe, поскольку файл использует только перевод строки (\n) для конца строки (формат Unix)в начале, и блокнот объединяет их в одну строку.

В файле вы увидите строку (около строки 6 или около середины строки 1, в которой вы использовали блокнот), начиная с: Build::

Build: D:\php-sdk\snap_5_3\vc9\x86\obj\Release - non-threadsafe, VC9 build
Build: D:\php-sdk\snap_5_3\vc6\x86\obj\Release - non-threadsafe, VC6 build
Build: D:\php-sdk\snap_5_3\vc9\x86\obj\Release_TS - threadsafe, VC9 build
Build: D:\php-sdk\snap_5_3\vc6\x86\obj\Release_TS - threadsafe, VC6 build

Это говорит нам, какую версию PHP вы используете.

Из папки, в которую вы извлекли драйверы MS SQL PHP, выберите драйвер (ы), который соответствует версииИспользуемый PHP (если вы не используете PDO, вам не нужно копировать драйверы php_pdo_):

PHP 5.3.5 Non-threadsafe VC9: php_sqlsrv_53_nts_vc9.dll, php_pdo_sqlsrv_53_nts_vc9.dll
PHP 5.3.5 Non-threadsafe VC6: php_sqlsrv_53_nts_vc6.dll, php_pdo_sqlsrv_53_nts_vc6.dll
PHP 5.3.5 Threadsafe VC9: php_sqlsrv_53_ts_vc9.dll, php_pdo_sqlsrv_53_ts_vc9.dll
PHP 5.3.5 Threadsafe VC6: php_sqlsrv_53_ts_vc6.dll, php_pdo_sqlsrv_53_ts_vc6.dll

Предполагая, что ваша установка PHP находится в C:\PHP, скопируйте (НЕ ПЕРЕМЕЩАЙТЕ) эти файлы в папку C:\PHP\EXT.

Откройте C:\PHP\PHP.INI и найдите Dynamic Extensionsчасть файла и добавьте:

extension=php_sqlsrv_53_nts_vc9.dll
extension=php_pdo_sqlsrv_53_nts_vc9.dll   <-- optional

Наконец, чтобы PHP мог найти эти расширения, убедитесь, что директива extension_dir в C:\PHP\PHP.INI установлена ​​в C:\PHP\EXT:

extension_dir = C:\PHP\ext

Перезапустите IIS и позвоните phpinfo().Если все хорошо, вы должны увидеть:

enter image description here

И если вы также загрузили драйвер PDO, вы должны увидеть:

enter image description here

1 голос
/ 04 апреля 2013

Вышеупомянутое:

extension = php_sqlsrv_53_nts_vc9.dll
extension = php_pdo_sqlsrv_53_nts_vc9.dll

то, что я нашел, неверно.

Следовательно, это может быть:

extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
...