PDOException «не удалось найти драйвер» - PullRequest
258 голосов
/ 18 мая 2010

Я только что установил Debian Lenny с Apache, MySQL и PHP и получаю исключение PDOException could not find driver.

Это конкретная строка кода, на которую она ссылается:

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS)

DB_HOST, DB_NAME, DB_USER и DB_PASS - константы, которые я определил. Он отлично работает на рабочем сервере (и на моей предыдущей установке Ubuntu Server).

Это как-то связано с моей установкой PHP?

Поиск в Интернете не помог, все, что я получаю, это обмен экспертами и примеры, но без решений.

Ответы [ 37 ]

213 голосов
/ 18 мая 2010

Вам нужен модуль с именем pdo_mysql. Ищете следующее в phpinfo (),

pdo_mysql

PDO Driver for MySQL, client library version => 5.1.44
183 голосов
/ 10 ноября 2011

DSN в вашем коде показывает, что вы пытаетесь соединиться с драйвером mysql. Ваше сообщение об ошибке указывает на то, что этот драйвер недоступен.

Убедитесь, что на вашем сервере установлено расширение mysql.

В Ubuntu / Debian вы проверяете пакет с помощью:

dpkg --get-selections | grep php | grep mysql

Установите пакет php5-mysql, если у вас его нет.

В Ubuntu / Debian вы можете использовать:

  • PHP5: sudo apt-get install php5-mysql
  • PHP7: sudo apt-get install php7.0-mysql

Наконец, чтобы он заработал, вам нужно перезагрузить веб-сервер:

  • Apache: sudo /etc/init.d/apache2 restart
  • Nginx: sudo /etc/init.d/nginx restart
74 голосов
/ 27 августа 2010

Обновление : более новые версии должны использовать пакет php-sqlite3 вместо php5-sqlite. Так что используйте это, если вы используете последнюю версию Ubuntu:

sudo apt-get install sqlite php-sqlite3

Оригинальный ответ на вопрос здесь:

sudo apt-get install sqlite php5-sqlite
sudo /etc/init.d/apache2 restart

Если ваш phpinfo () не показывает строку pdo_sqlite (в моем случае, на моем сервере Ubuntu), вам просто нужно запустить строки выше, и тогда вам будет хорошо.

26 голосов
/ 19 августа 2016

Для более новых версий Ubuntu с PHP 7.0 вы можете получить пакет php-mysql:

sudo apt-get install php-mysql

Затем перезагрузите сервер:

sudo service apache2 restart
21 голосов
/ 11 июня 2013

На моем компьютере с Windows мне нужно было указать абсолютный путь к каталогу расширений в моем php.ini:

extension_dir = "c:\php5\ext"

17 голосов
/ 05 июня 2017

У меня была такая же проблема. Решение зависит от ОС. В моем случае у меня есть Debian, поэтому для его решения:

  • Обновил мою версию php с ( php5 до php7 )
  • Установите php-mysql и php7.0-mysql

    apt-get install php-mysql
    apt-get install php7.0-mysql
    
  • Я отредактировал свою php.ini папку в /etc/php/7.0/apache2/php.ini

    uncomment the line : extension=php_pdo_mysql.dll
    
  • Затем перезапустите apache:

    service apache2 restart
    

Это решает мою проблему

14 голосов
/ 16 апреля 2013

В Ubuntu просто выполните

sudo apt-get install php5-mysql
8 голосов
/ 12 мая 2016
sudo apt-get install php-mysql 

хорошо работал на Ubuntu и PHP 7

5 голосов
/ 18 мая 2010

Вы проверяли свой php.ini (проверьте правильность расположения с помощью phpinfo ()), если MySQL и драйвер установлены правильно?

5 голосов
/ 18 ноября 2014

При добавлении их в ваш php.ini убедитесь, что ссылка php_pdo.dll указана первой перед тем, как dll драйверы dll, в противном случае это также вызовет это сообщение об ошибке. Добавьте их так:

[PHP_PDO]
extension=php_pdo.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
...