Uncaught PDOException: не удалось найти драйвер

Я только что установил Ubuntu Server 16.04 с Nginx, и я установил php следующим образом:

sudo apt-get install php7.0-cli php7.0-cgi php7.0-fpm php7.0-curl

И для MySql я установил Percona, таким образом:

apt-get install percona-server-server-5.7 percona-server-client-5.7

но я не могу понять, почему я не могу использовать PDO в моем PHP-скрипте, это мой код:

$db = new PDO("mysql:dbname=db;host=localhost;charset=utf8", "username", "password");

Я получаю эту ошибку:

Uncaught PDOException: could not find driver

Я искал в Интернете, и я обнаружил, что мне нужно раскомментировать эту строку в Windows в php.ini:

;extension=php_pdo_mysql.dll

или эта строка в Linux:

;extension=php_pdo_mysql.so

Я проверил свой php.ini в:

/etc/php/7.0/fpm/php.ini

и у меня есть .dll файл, а не .so файл, я также не могу понять, почему у меня есть DLL вместо так. В любом случае, включение этого DLL-файла и перезапуск php ничего не изменят. Кто-нибудь может мне помочь?

Спасибо

0

Решение

Установка клиент-серверных пакетов mysql не влияет на PHP. PHP все еще нуждается в привязках для связи с вашим сервером MySQL, особенно в вашем случае драйвером PDO MySQL.

Пакет, вероятно, будет называться php7.0-pdo-mysql в зависимости от того, какие репозитории настроены, ваш менеджер пакетов Ubuntu. Если вы используете PHP 7 в Ubuntu 16.04, скорее всего, это будет метапакет, который включает php7.0-mysql, Вот что я получил от aptitude 16.04 с помощью Ondrej PPA.

aptitude show php7.0-pdo-mysql

Пакет: php7.0-mysql
Состояние: установлено
Автоматически устанавливается: нет
Версия: 7.0.9-1 + deb.sury.org ~ верный + 1
Приоритет: необязательно
Раздел: php
Сопровождающий: Сопровождающий Debian PHP
Архитектура: amd64
Размер без сжатия: 514 k
Зависит от: php-common (> = 1:35), ucf, php7.0-common, libc6 (> = 2.15)
Предоставляет: php-mysqli, php-mysqlnd, php-pdo-mysql, php7.0-mysqli, php7.0-mysqlnd, php7.0-pdo-mysql
Описание: модуль MySQL для PHP
Этот пакет предоставляет модуль (и) MySQL для PHP.

php7.0-pdo-mysql это тот, который нас интересует для загрузки драйвера mysql для PDO в PHP. Поэтому обязательно поищите в вашем менеджере пакетов, чтобы найти правильный пакет, прежде чем пытаться установить, но для ваших дистрибутивов / репозиториев должен быть подобный пакет.

После установки вам нужно будет перезапустить php-fpm, что-то вроде sudo service php7.0-fpm restart а затем проверьте свой phpinfo() чтобы убедиться, что pdo_mysql драйвер теперь загружен.

Вам не нужно редактировать php.ini вручную при установке через менеджер пакетов. Кроме того, добавив extension=pdo_mysql.so Линия на ваш php.ini не имеет никакого эффекта, если расширение не существует. И очевидно, что попытка загрузить dll не будет работать на Linux, это библиотеки только для Windows.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]