У меня есть сценарий, который использует __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]