WAMP и SQLSRV: sqlsrv не включается в `PDO :: getAvailableDrivers ()` после установки

Мне никогда не удавалось заставить SQL Server нормально работать в моей среде WAMP, и я пытаюсь наконец решить эту проблему раз и навсегда.

Пытался:

  • Загрузил последние версии драйверов SQL Server с сайта Microsoft, затем извлек их и поместил в папку \ wamp \ bin \ php \ php5.4.3 \ ext.
  • Я редактировал как \ wamp \ bin \ php \ php5.4.3 \ php.ini, так и \ wamp \ bin \ apache \ apache2.4.2 \ bin \ php.ini, чтобы включить extension=php_sqlsrv_54_ts.dll.
  • перезапустил все службы WAMP
  • проверил phpinfo ... нет SQLSRV
  • проверил PDO::getAvailableDrivers() ... получил только Array( [0]=>mysql, [1]=>sqlite )

Теперь я понимаю, что PDO изначально включен в PHP 5.3+, но поскольку инструкции MS явно требуют, чтобы extension=php_pdo.dll был включен, поэтому я решил, что тоже попробую.

Я загрузил DLL с dlldll.com (первая встреча с этим сайтом, поэтому я надеюсь, что это надежный источник), извлек и переместил файл _php_pdo.dll_ в свой \ wamp \ bin \ php \ php5.4.3 \ ext dir, затем добавил его в оба файла php.ini ... без улучшений.

В качестве примечания: когда я проверяю список активированных PHP ext из меню WAMPSERVER, расширения sqlserver даже не отображаются в списке.

Чтобы проверить это, я также попытался раскомментировать extension=php_pdo_pgsql.dll в файлах php.ini, и это сработало отлично ... "pgsql" был включен в драйверы avail. множество.

Моя установка:

  • Wampserver 2.2 (64bit), running
    • Apache 2.4.2
    • PHP 5.4.3
  • Win 7 pro 64

Что дальше?

У меня почти закончились идеи.

Единственное, о чем я могу думать, это то, что, возможно, драйверы SQLSRV 32-битные, и они не очень хорошо работают с моей 64-битной установкой ... ооооооооооо ... Я очень надеюсь, что нет.

Любые советы / указатели приветствуются ... особенно, если они не включают полную переустановку;)


person mOrloff    schedule 08.07.2013    source источник
comment
Какие ошибки возникают при запуске apache в журнале ошибок php? Это говорит о том, что dll не найдена? Разрядность вашего компьютера не должна быть проблемой, пока ваш WAMP и расширения 32-битные, с вами все будет в порядке.   -  person Sarah Kemp    schedule 08.07.2013
comment
Принятие желаемого за действительное помогло мне игнорировать эту 64-битную заметку WAMP ... У меня не было ничего, кроме проблем с 64-битным WAMP - похоже, единственное расширение, которое мне когда-либо было нужно (независимо от того, какое оно есть), доступно только в 32-битном. Что касается журнала ошибок php - вы уверены, что смотрите на нужный? Путь будет в вашем файле php.ini. Если PHP не удается загрузить расширение, которое вы настраиваете для запуска, при запуске у него должна быть запись.   -  person Sarah Kemp    schedule 08.07.2013
comment
Спасибо. Объявление error_log закомментировано в ini (предположительно по умолчанию). После раскомментирования он перезапустил все службы WAMP, и теперь в журнале указано, что php_sqlsrv_54_ts.dll не является допустимым приложением Win32. Что это нам говорит?   -  person mOrloff    schedule 08.07.2013
comment
Да ... жаль, что у меня нет лучших новостей. forum.wampserver.com/read.php?2,79764   -  person Sarah Kemp    schedule 08.07.2013


Ответы (1)


Мне удалось заставить драйвер sqlsvr PHP PDO работать с моей немного более старой версией 32-разрядной версии WAMP. Вот моя установка:

  • WAMP 2.2 (32 bit)
    • Apache 2.2.21
    • PHP 5.3.8
  • Win 7 Pro 64 бит

Вот что я сделал:

  1. Загрузили драйверы MS 3.0 отсюда: http://www.microsoft.com/en-us/download/details.aspx?id=20098
  2. Распаковал все файлы в папку PHP ext (C: \ wamp \ bin \ php \ php5.3.8 \ ext)
  3. Добавил эту строку в мой файл apache php.ini (C: \ wamp \ bin \ apache \ Apache2.2.21 \ bin \ php.ini)

    extension = php_pdo_sqlsrv_53_ts.dll

  4. Загрузил и установил драйвер ODBC для собственного клиента MS SQL Server 2012 отсюда: http://go.microsoft.com/fwlink/?LinkID=239648&clcid=0x409

После этих шагов мой PHP-код успешно подключился к моей базе данных SQL Server.

person J Higs    schedule 21.10.2013