Расширение PHP PDO не работает в IIS

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

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

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

EDIT : PDO не находится в phpinfo() . Я знаю, что это неправильно загружено, я пытаюсь понять, почему. Вот мой файл php.ini : php.ini на Pasebin

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

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

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

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

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

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

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

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.

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

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

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

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

Удачи!

Просто была проблема, проверьте разрешения на файлы DLL, сделал трюк для меня.

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