Я проверил файл 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-соединение [wrapped: не удалось найти драйвер]
что мне теперь нужно делать? устранить эту ошибку
благодаря
Узнайте, какой драйвер 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
.
Php_pdo_mysql.dll в каталоге расширения может пытаться загрузить libmysql.dll или mysql.dll, который по умолчанию находится в каталоге php (я думаю, что они по крайней мере в моем php-каталоге, но я установил его так давно Не помните, были ли они там по умолчанию или я их скопировал). Если в php-каталоге нет вашего PATH, эти последние dll не будут найдены и вызывают ошибку.
Я бы предложил проверить, что libmysql.dll и / или mysql.dll находятся в вашем каталоге php. Если это так, добавьте ваш php-каталог в PATH вашей системы и REBOOT на свой компьютер. У меня была та же проблема, добавлен каталог php на путь системы, перезапущен Apache, и проблема не была решена. Мне нужно было перезагрузиться, прежде чем Apache / PHP найдет dll в каталоге php.
Альтернативой является копирование libmysql.dll и mysql.dll в каталог, поиск по умолчанию (это каталог Windows или, возможно, каталог Window \ System32). Когда php_pdo_mysql.dll будет загружен, он сможет найти зависимые dll.
Если эти две библиотеки не находятся в вашем php-каталоге, попробуйте загрузить и установить MySQL. Вы можете найти эти DLL среди файлов, установленных моим установщиком MySQL.
Если вы используете Apache, он должен сообщать в журнале ошибок, что он не может загрузить php_pdo_mysql.dll. Если нет, возможно, он сообщает о другой ошибке при запуске. Проводка любых ошибок из журнала может быть полезной для диагностики.
Надеюсь это поможет.
В php.ini установите следующее, чтобы проверить, есть ли проблема с загрузкой расширений.
display_startup_errors = On
У меня были проблемы в прошлом, когда, несмотря на то, что DLL находилась в каталоге php / ext /, и, несмотря на правильность установки php-пути, мне пришлось указать абсолютный путь к расширению.
Проверьте журналы ошибок Apache, чтобы увидеть, была ли проблема с загрузкой расширения
Вы работаете с командной строкой?
Часто в командной строке и PHP в браузере используются разные файлы PHP.ini.
Используйте phpinfo (), чтобы проверить модули, включенные в borwser. Используйте PHP -m, чтобы увидеть модули, установленные через CLI