Расширение PHP PDO не работает на IIS - PullRequest
5 голосов
/ 23 марта 2011

У меня есть скрипт, который использует __autoload () для загрузки классов (глупо, я знаю, это старый код, который я использовал для развлечения / тестирования), и он, похоже, пытается автозагрузить PDO. Это приводит меня к мысли, что это не тот класс PDO, каким он должен быть. Я проверил php.ini и включил php_pdo.dll вместе с php_pdo_mysql.dll и т. Д. Файлы .dll существуют в "ext /", и я несколько раз перезапускал веб-сервер.

У меня нет большого опыта работы с IIS, но у меня никогда не было этой проблемы в Linux, поэтому я не уверен, в чем проблема.

Любая помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ : PDO не в phpinfo(). Я знаю, что он загружен неправильно, я пытаюсь выяснить, почему. Вот мой файл php.ini: php.ini на Pasebin

C: \ Program Files (x86) \ PHP \ ext - это каталог расширений, который указан как таковой в php.ini и phpinfo().

Ответы [ 5 ]

4 голосов
/ 09 апреля 2011

Одна вещь, которую я нахожу странным, это то, что вы указываете расширение в разделе [PDO]. Я не знаю такого рода нотации - мой Windows php.ini не делает этого. Возможно, строка игнорируется, потому что интерпретируется как PDO.extension, что не имеет смысла.

Что произойдет, если вы переместите бит extension=php_pdo.dll в основную часть файла INI (вне любого раздела [])?

Если это ничего не изменит: Вы на 100000% уверены, что редактируете правильный php.ini?

С расширением, указанным в файле, PHP должен либо аварийно завершить работу при перезагрузке сервера, либо предоставить вам класс PDO.

Проверьте phpinfo(), чтобы увидеть, какой именно INI-файл используется точно.

2 голосов
/ 13 апреля 2011

Я уверен, что вы сделали большинство / все из следующих вещей, но вот что я бы сделал:

1: Загляните в журнал ошибок IIS и посмотрите, сообщает ли он о каких-либо проблемах (я некоторое время не работал с IIS, но уверен, что где-то есть файл журнала ошибок)

2: Убедитесь, что другие файлы .dll загружаются путем перекрестной проверки в phpinfo ()

3: закомментируйте все расширения, такие как php_mbstring.dll, gd2 и т. Д., И посмотрите, отражается ли это в phpinfo (), затем начните включать одно за другим.

4: удалить все разделы внизу и просто поместить расширения в раздел динамических расширений ini. что-то вроде

extension=php_abc.dll
extension=php_xyz.dll
extension=php_123.dll

5: я всегда неохотно имел пробелы в именах каталогов, поэтому я скопировал бы папку ext в корень c где-нибудь для тестирования, может быть что-то вроде c: \ phpexts

6: Я бы взял тот же php.ini и создал бы похожую среду в apache (той же версии php) и посмотрел, работает ли он или наоборот, перенес php.ini из Apache в IIS.

0 голосов
/ 03 октября 2015

У нас была такая же проблема, просто проверьте переменную extension_dir внутри [WebPIChanges]

0 голосов
/ 19 апреля 2011

Только что возникла эта проблема, проверьте права доступа к файлам dll, помог мне

0 голосов
/ 16 апреля 2011

Попробуйте открыть cmd и набрать C:\Program Files (x86)\PHP\bin\php -r "".

Вы получаете сообщение об ошибке?Если да, что?

Убедитесь, что у вас есть правильное расширение для Visual C++ версии, которую вы используете с IIS.

Если нет, возьмите этот каталог и переместите его в C:\,Это может быть связано с пробелами в пути.Настройте конфигурацию IIS и попробуйте снова.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...