проверил расширение файла php.ini = php_pdo_mysql.dll включено, но все еще ошибка

Я проверил файл php.ini, расширения включены:

extension=php_pdf.dll
extension=php_pdo.dll
extension=php_pdo_firebird.dll
extension=php_pdo_mssql.dll
extension=php_pdo_mysql.dll

но все равно при попытке открыть страницу выдает ошибку

500 | Внутренняя ошибка сервера | PropelException Не удалось открыть соединение PDO [завернуто: не удалось найти драйвер]

что мне нужно сделать сейчас? чтобы устранить эту ошибку

Благодарность


person jarus    schedule 07.04.2009    source источник
comment
Прежде всего, вы должны опубликовать код, который вызывает проблемы.   -  person soulmerge    schedule 07.04.2009
comment
ну, я новичок в symfony, все, что я сделал, это php symfony propel-generate-crud. ">localhost/sf_sandbox/web/frontend_dev.php/post   -  person jarus    schedule 07.04.2009
comment
проверьте, есть ли php_pdo_mysql.dll в вашем каталоге [phpinst]/ext   -  person dejjub-AIS    schedule 25.11.2014
comment
запустите php --ini и посмотрите, отсутствует ли расширение. Если да, откройте свой php.ini и посмотрите, правильный ли путь к расширениям. Найдите extension_dir   -  person Highmastdon    schedule 19.06.2016


Ответы (5)


  • Узнайте, какой драйвер PDO вам действительно нужен (MySQL, MS SQL...?)

  • Протестируйте, создав экземпляр PDO самостоятельно, чтобы избежать ошибок в другом месте:

    $db = new PDO('mysql:host=127.0.0.1;dbname=testdb', 'username', 'password');

Если вы все еще получаете «не удалось найти драйвер», теперь вы можете быть уверены, что действительно его не хватает :)

Как его установить, если у вас его еще нет, во многом зависит от вашей системы. Например, в Debian Linux вам нужно выполнить apt-get install php5-mysql, который устанавливает расширения mysql, mysqli и pdo_mysql.

После установки убедитесь, что он включен в php.ini. убедитесь, что вы редактируете правильный файл — тот, который используется вашим веб-сервером.

После этого, чтобы убедиться, что расширение было загружено правильно, выполните одно из следующих действий:

  • создайте скрипт, который выполняет phpinfo(). Вы должны увидеть раздел PDO с ключом драйверы PDO и значением, например "mysql, pgsql", или

  • запустите php -m из командной строки, и вы должны увидеть, например, pdo_mysql.

person Jaka Jančar    schedule 07.04.2009

php_pdo_mysql.dll в каталоге расширений может пытаться загрузить libmysql.dll или mysql.dll, которые по умолчанию находятся в каталоге php (я думаю, что они, по крайней мере, в моем каталоге php, но я установил его так давно, что могу не помню, были ли они там по умолчанию или я их туда скопировал). Если каталог php не находится в вашем PATH, эти последние dll не будут найдены и вызовут ошибку.

Я бы посоветовал проверить, что libmysql.dll и/или mysql.dll находятся в вашем каталоге php. Если это так, добавьте каталог php в PATH вашей системы и ПЕРЕЗАГРУЗИТЕ компьютер. У меня была та же проблема, я добавил каталог php в системный путь, перезапустил Apache, и проблема не была решена. Мне нужно было перезагрузиться, прежде чем Apache/PHP найдет dll в каталоге php.

Альтернативой является копирование libmysql.dll и mysql.dll в каталог, который ищется по умолчанию (это каталог Windows или, возможно, каталог Window\System32). Когда php_pdo_mysql.dll загружен, он сможет найти зависимые DLL.

Если этих двух DLL нет в вашем каталоге php, попробуйте загрузить и установить MySQL. Вы можете найти эти dll среди файлов, установленных установщиком MySQL.

Если вы используете Apache, в журнале ошибок должно быть указано, что он не может загрузить php_pdo_mysql.dll. Если нет, возможно, он сообщает о какой-то другой ошибке при запуске. Публикация любых ошибок из журнала может быть полезна для диагностики.

Надеюсь это поможет.

person Stacey Richards    schedule 07.04.2009

В php.ini установите следующее, чтобы проверить, есть ли проблема с загрузкой расширений.

display_startup_errors = On
person David Snabel-Caunt    schedule 07.04.2009

  • В прошлом у меня были проблемы, когда, несмотря на то, что DLL находилась в каталоге php/ext/ и несмотря на то, что путь php был установлен правильно, мне приходилось указывать абсолютный путь к расширению.

  • Проверьте журналы ошибок Apache, чтобы узнать, не возникла ли проблема с загрузкой расширения.

person user39113    schedule 07.04.2009

Вы работаете с командной строкой?

Часто командная строка и PHP в браузере используют разные файлы PHP.ini.

Используйте phpinfo() для проверки модулей, включенных в браузер Используйте PHP -m для просмотра модулей, установленных через CLI

person Jon Winstanley    schedule 08.07.2009