Подключение к 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.

1 ответ

Решение

Я не смог получить соединение 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", из директории, в которой вы установили SQL-файл.
    -Примечание: в имени файла для драйвера "nts" означает "не поддерживающий поток", vc9 - это среда, которая использовалась для компиляции драйвера / php, а "53" соответствует используемой версии php (в В этом случае PHP версии 5.3.Watevertheminorversionis). Вы должны ВСЕГДА устанавливать не-потокобезопасную версию в Windows. Установщик веб-платформы Microsoft сделает это за вас.

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

    расширение =php_sqlsrv.dll

    расширение =php_pdo_sqlsrv.dll

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

    расширение =php_sqlsrv_53_nts_vc9.dll

    расширение =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".

Другие вопросы по тегам