Назад | Перейти на главную страницу

Подключение к SQL Server 2005 через PDO

Я обновил свою установку php до версии 5.4.14 с помощью установщика веб-платформы Microsoft 4.6.

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

До обновления мое соединение работало отлично, но теперь оно не работает. Вот моя строка подключения, где 1.1.1.1 - мой настоящий IP-адрес:

$db = new PDO("odbc:DRIVER={SQL Server};SERVER=1.1.1.1;DATABASE=TEST;charset=utf8", "TEST", "Password");

Это приводит к тому, что браузер открывает страницу с сообщением «ошибка сервера», но мой журнал ошибок остается пустым. В моем файле php.ini у меня есть следующие строки:

extension=php_pdo_sqlsrv.dll
extension=php_sqlsrv.dll
extension=php_sqlsrv_53_nts_vc6.dll

Эти расширения не отображаются на моей странице phpinfo.php. Моя переменная extension_dir установлена ​​в правильный каталог.

ОБНОВЛЕНИЕ: теперь мой журнал ошибок заполняется (по неизвестным причинам), и я получаю эту ошибку:

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\Program Files\PHP\v5.4\ext\php_pdo_sqlsrv.dll' - The specified module could not be found.

Мне не удалось заставить SQL-соединение работать на php 5.4.14, но я смог вернуться к версии 5.3 и заставить его работать. Я многому научился на своем пути, и я хотел написать здесь, чтобы помочь другим, кто придет после.

О моей среде: Windows Server 2003 IIS версии 6.0 SQL Server 2005, расположенный на другом компьютере.

Инструкции по установке PHP 5.3.xx: 1. Удалите все предыдущие версии php, которые вы не используете. У вас может быть одновременно установлено несколько версий PHP.

  1. Установите установщик веб-платформы Microsoft 4.6. http://www.microsoft.com/web/downloads/platform.aspx

  2. После установки запустите его и перейдите на вкладку «Приложения».
    -Поиск по запросу "php". -Установите PHP версии 5.3.xx И «Драйверы Microsoft для PHPv5.3 для SQL-сервера в IIS»

  3. Загрузите «Драйверы Microsoft 3.0 для PHP для SQL Server», SQLSRV20.EXE, с http://www.microsoft.com/en-us/download/details.aspx?id=20098. Очень важно выбрать пакет SQLSRV20.EXE, а не пакет SQLSRV30.EXE. «Установите» пакет SQLSRV20.EXE где угодно. На пятом шаге вы скопируете два драйвера из этого каталога. -Примечание: для тех, кто загружает SQLSRV30.EXE для другой конфигурации установки и выдает ошибку «SQLSRV30.EXE не является допустимым приложением Win32», вы можете обойти это, используя 7-zip и распаковав его содержимое. (Вы можете обращаться с .exe как с архивом.)

  4. Перейдите в каталог установки PHP (в моем случае C: \ PHP \ v5.3). Затем войдите в каталог «ext».
    -Удалите два файла: «php_pdo_sqlsrv.dll» и «php_sqlsrv.dll» -Скопируйте эти два файла, «php_pdo_sqlsrv_53_nts_vc9.dll» и «php_sqlsrv_53_nts_vc9.dll», из директории, в которую вы установили пакет SQLSRV20.EX.
    -Примечание: в имени файла драйвера «nts» означает «не потокобезопасный», vc9 - это среда, которая использовалась для компиляции драйвера / php, а «53» соответствует используемой версии php (в в данном случае php версии 5.3. любая другая версия). Вы должны ВСЕГДА устанавливать в Windows версию без поддержки потоков. Установщик веб-платформы Microsoft сделает это за вас.

  5. Откройте файл php.ini (находится в корневом каталоге, в котором установлен PHP. В моем случае это был C: \ PHP \ v5.3 \ php.ini), удалите эти две строки, которые будут ближе к концу файла. :

    extension = php_sqlsrv.dll

    extension = php_pdo_sqlsrv.dll

    И добавьте эти две строки:

    extension = php_sqlsrv_53_nts_vc9.dll

    extension = php_pdo_sqlsrv_53_nts_vc9.dll

  6. В IIS добавьте php-приложения в пул, если это еще не сделано, щелкните правой кнопкой мыши пул и нажмите «Переработать». Тебе должно быть хорошо!
    -Вы также можете попытаться перезапустить службу администрирования IIS.

ИСПРАВЛЕНИЕ ПРОБЛЕМ Мое приложение, в котором я запускал свою страницу phpinfo.php, не находилось в пуле приложений php. Он работал в пуле приложений ASP.net. После перемещения моего приложения php в собственный пул и перезапуска пула приложений появился драйвер SQL.

Возможно, вам потребуется настроить файл fcgiext.ini в C: \ WINDOWS \ system32 \ inetsrv. В разделе типов вы должны указать что-то вроде «php = PHP53_via_FastCGI», а затем «[PHP53_via_FastCGI] ExePath = C: \ Program Files \ PHP \ v5.3 \ php-cgi.exe».

"php = PHP53_via_FastCGI" должен соответствовать установке PHP, которую вы хотите установить в IIS. Если у вас есть другой раздел для «PHP54_via_FastCGI», и вы хотите использовать PHP 5.4 для страниц, вам следует изменить это значение на «php = PHP53_via_FastCGI».