Драйверы PDO не имеют значения в Windows
Невозможно включить php_pdo_mysql.dll
в машине. Я установил extension=php_pdo.dll
и extension=php_pdo_mysql.dll
в php.ini, но когда я проверил phpinfo()
, драйвер PDO не имеет значения.
а также я не могу найти информацию mysql в phpinfo(), но я установил extension=php_mysql.dll
enabled.
Что не так?
Ответы
Ответ 1
У меня была такая же проблема, когда я обновился до PHP 5.4. У меня был
extension_dir = "ext"
в php.ini и php -m
начинал нормально и сообщал, что он загружал pdo_mysql, но когда я запускал phpinfo.php через apache, драйвер отсутствовал.
Я исправил его, изменив extension_dir
на абсолютный путь. Я предполагаю, что он запутался при работе через Apache и сделал его относительно чего-то еще.
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "D:/php-5.4.11-Win32-VC9-x86/ext"
Ответ 2
попробуйте следующее: найдите это в своем php.ini и раскомментируйте extension_dir = "ext"
; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"
; On windows:
extension_dir = "ext"
Ответ 3
Попробуйте php -m
в консоли, он покажет ошибки запуска PHP.
Ответ 4
Проверьте с помощью phpinfo(), чтобы убедиться, что путь для php.ini является тем же самым. На компьютерах с Windows обычно создается несколько экземпляров php.ini и вызывает путаницу.
Кроме того, вызов php из командной строки даст вам сообщение об ошибке с более подробной информацией о том, почему он не может быть загружен. Возможно, расширение, которое вы пытаетесь включить, несовместимо с вашей установкой PHP. то есть это небезопасная dll с потоковым безопасным двоичным кодом или существует несоответствие компилятора где-нибудь, где оба используются vc9 и vc6.
Ответ 5
На Windows Server 2012, Apache 2.4, установка php 5.4, после того, как все, что изменилось, сработало...
PHPIniDir "C:\php\"
к
PHPIniDir "C:/php/"
... гухи.
Ответ 6
После изменения конфигурации php.ini необходимо перезапустить сервер Appche в службе Windows. Затем загрузится модуль расширения. используйте следующий код для тестирования: <?php print_r(get_loaded_extensions());?>
Ответ 7
У меня была эта проблема в Windows с помощью IIS. Мой php.ini содержал следующие разделы:
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
[PHP_PDO]
extension=php_pdo.dll
Я просто взял разделы [PHP_PDO_MYSQL]
и [PHP_PDO]
и поменял местами свои позиции, чтобы первым пришел [PHP_PDO]
. Я думаю, порядок объявления важен!
Ответ 8
Комментарий Mihai в 2012 году говорит: "Попробуйте php -m в консоли, он покажет ошибки запуска PHP". Это предложение оказалось наиболее полезным. Если в файле php.ini имеются ошибки, диспетчер Windows PHP (IIS 8) не совсем понимает, что происходит с php.ini.
Перейдите в командную строку и введите php -m
в приглашении. Всплывающее сообщение (предупреждение) сообщит вам о любых ошибках, и оно даст номера строк для этих проблем. В большинстве случаев моя единственная проблема заключалась в том, что я раскоментировал (удалил полуточку) на нескольких строках php.ini, где я НЕ должен был этого делать.
Еще один полезный совет для меня заключался в том, чтобы поместить полный путь к папке расширений (см. комментарий выше Джереми Прайн), который помог с появлением сообщений "пропавших без вести" в предупреждениях.
Ответ 9
Я получил подсказки здесь:
http://wiki.cementhorizon.com/display/CH/Solution+-+Unable+to+load+dynamic+library+C+php+ext+php_mysql.dll+-+the+specified+module+could+not+be+found
Я убедился, что я установил c:/php
в качестве переменной PATH, а затем переместил соответствующие DLL в каталог c:/php
(из каталога c:/php/ext
).
Все работает для меня сейчас, хотя мне не совсем удобно перемещать вещи вокруг каталога php.
Ответ 10
У меня была такая же проблема, и я был в тупике, пока не прочитал следующее:
http://www.artfulsoftware.com/php_mysql_win.html
Я запускаю PHP 5.2 с Apache 2.2. Исправить для меня было скопировать файл libmysql.dll в мой каталог bin Apache.
Я бы рекомендовал следующий курс действий всем, кто имеет эту проблему:
1) убедитесь, что загруженный файл конфигурации находится там, где вы думаете (например, что Apache не использует какой-либо по умолчанию php.ini). Phpinfo() предоставит ответ на этот
2) убедитесь, что все нужные расширения находятся в папке php\ext и включены в файл php.ini(большинство популярных расширений просто нужно расколоть)
3) Попробуйте загрузить pdo_sqllite. Если это произошло в phpinfo() после перезапуска Apache, вы сузили проблему неспособности Apache загрузить необходимые расширения mysql.
4) Следуйте инструкциям в ссылке выше.
Ответ 11
У меня тоже была эта проблема. У меня есть Apache/2.2.22 (Win32) PHP/5.3.23 на машине Windows 7. Мое решение меняло расширение extension_dir = C:\Program Files (x86)\PHP\ext в файле php.ini на extension_dir = "C:\Program Files (x86)\PHP\ext". Просто нужно было добавить кавычки.
Я также добавил каталог php в CLASSPATH.
Ответ 12
проверьте, что файлы pdo *.dll находятся в соответствующих местах в каталоге ОС, проверьте, что ссылки на эти файлы включены в php.ini, проверьте правильность вашей строки dbconnection, перезапустите apache
Ответ 13
Ошибка PHP PDO не существует на 5.4
Неустранимая ошибка: Class 'DigitalToolBox\PDO' не найден в C:\SERVER\www\MyAPP\DigitalToolBox\MysqlConnectionTool.php в строке 19
вы можете увидеть, что pdo загружен, потому что он находится в списке с помощью этой команды:
print_r(get_loaded_extensions());
эта ошибка возникает при использовании пространств имен, нам нужно добавить в начале нашего кода инструкцию:
use PDO;
IF ($ this- > работает)
$ VoteForThis ++;
Ответ 14
Если вы используете PHP Manager с помощью IIS, выполните следующие действия:
-
Откройте IIS (обычно я открываю его, вводя IIS в начале);
![Start IIS]()
-
Дважды щелкните "Менеджер PHP";
![Click PHP Manager]()
-
Нажмите "Включить или отключить расширение";
![Enable/Disable extension]()
-
Прокрутите вниз, чтобы найти нужный вам драйвер (в моем случае php_pdo_mysqll.dll
) и нажмите "включить";
![Scroll to driver & enable]()
-
После этого водитель должен появиться и работать.
![Enabled driver]()
-
Готово! Надеюсь, это помогло кому-то, потому что другие ответы не помогли мне.
Ответ 15
Драйверы PDO не имеют значения - ваши записи dll не могут быть упорядочены в файле php.ini. Проверьте список записей расширения dll.
extension=php_pdo_mysql.dll
записи должны размещаться рядом со всеми элементами pdo. То же, что
extension=php_mysql.dll
записи должны быть размещены рядом со всеми без записей pdo.
Хмель помогает...
Ответ 16
В PHP 7.1 x64 для windows с apache 2.4 x64:
extension_dir = "ext"
не работает для меня,
абсолютный путь:
extension_dir = "C:\DEV\PHP71\ext \"
хорошо работал