Caused by pdoexception could not find driver yii2 ошибка
I am using xampp and building a project in Yii2.I am getting this error "Caused by: PDOException could not find driver in D:xampphtdocsasicvendoryiisoftyii2dbConnection.php at line 602". I uncommented extension=php_pdo_pgsql.dll in php.ini file.Its not working .
1 answer
I figured out my problem.In php.ini file previously extension=php_pdo_mysql.dll was commented. I uncommented that and now its working.
See also questions close to this topic
I dump() $comments to find out a little more. It returns to me that filmId is of type PersistentCollection. I would like to retrieve the comments specific to each film according to filmId.
I tried to retrieve them by a $comments = $comRepo-> findBy($id) (since the id of the film I get in GET is what I want for the filmId), it gives me a nice unrecognized field error.
Following the documentation, I tried to create a custom query like this:
But I get the following error:
I have two virtual hosts on an Ubuntu 18.04. server with apache 2.4. The first one has a codeigniter php application and works fine. In the second one only a html file can be displayed. The call of the simple php-file index.php with the content leads to following error message:
There are many posts about this error on stackoverflow. I have looked through almost all of them, but none of the solutions helped. Many of the answers refer to older apache versions. My php is version 7.2.
The configuration of the 2 virtual hosts:
Directories: /var/www/html1 /var/www/html2 The rights of folder and files are the same.
No SELinux is installed. SSL works on both sides.
Why is php not displayed in virtual host 2?
I am working on one module in yii2 and please count me as a noob in this. I usually work in Laravel.
My query looks as below.
I have tried with removing joinWith relations but it will increase the duplicate queries to 220.
The query which gets repeated is one SELECT query
I have checked the "relation4" model but it has nothing suspicious in it.
What should I do or where should I look to resolve this issue??
My task is to generate a picture based on given data and a specific size. For example I have a template
How to make a picture of a certain size out of it?
thanks in advance
$when has a valid value 4 hours or 4 days . The command will be :
the output is null. Trying it with exec() is returning 127 code
Primary tabs
Forums:
Key Words for FKN + antitotal forum (CS VSU):
конфиги консоли копируются из
конфиги консоли копируются из db.
Т.е. у вас ошибка в консольном конфиге.
Обновлено:
посмотрел. понял. Надо будет на локальном развернуть.
_____________
матфак вгу и остальная классика =)
Просьба прикрепить к
Просьба прикрепить к репозиторию дамп вашей базы.
_____________
матфак вгу и остальная классика =)
одна ли версия интерпретатора
Дамп прикрепил, но вышеописанные действия делал когда БД была пуста.
понял. Проверю, но на всякий случай гляньте:
версии php в вебе и в консоли совпадают? Если нет, то скорее всего в той версии интерпретатора, что ассоциирована с консолью просто не включено расширение для работы с pdo mysql может просто не включено расширение.
Тогда надо переключить ассоциацию консольной команды на ту версию интерпретатора, которая работает с веб.
_____________
матфак вгу и остальная классика =)
Comments
Copy link Quote reply
newscloud commented Sep 1, 2016
Not sure how to fix this.
What steps will reproduce the problem?
Clean install on Ubuntu 14.04
What is the expected result?
Database driver is installed
What do you get instead?
could not find driver
Caused by: PDOException
could not find driver
in /var/www/mp/vendor/yiisoft/yii2/db/Connection.php at line 603
Additional info
Q | A |
---|---|
Yii version | 2.0.? |
PHP version | |
Operating system |
This comment has been minimized.
Copy link Quote reply
githubjeka commented Sep 1, 2016
sudo apt-get install php5-mysql
This comment has been minimized.
Copy link Quote reply
JohnMaina commented Jul 3, 2017 •
I have the same issue after running a yii2 project on a different PC (Different from the one it was developed on). I am using Windows 8.1 and WAMP, connecting to a remote SQL server. From PHPinfo(), I can see that I have;
PDO drivers (mysql, odbc and sqlite) enabled. For pdo_mysql, I can see mysqlnd 5.0.11. What could be the problem?
NB. I am new to yii2.
This comment has been minimized.
Copy link Quote reply
yii-bot commented Jul 3, 2017
Thank you for your question.
In order for this issue tracker to be effective, it should only contain bug reports and feature requests.
We advise you to use our community driven resources:
If you are confident that there is a bug in the framework, feel free to provide information on how to reproduce it. This issue will be closed for now.
This is an automated comment, triggered by adding the label question .
Я только что установил 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).
это как-то связано с моей установкой PHP?
поиск в интернете не помогло, все, что я получаю, это эксперты-обмен и примеры, но никаких решений.
вам нужен модуль с именем pdo_mysql. Глядя на следующих в phpinfo (),
убедитесь,что на вашем сервере установлено расширение mysql.
в Ubuntu / Debian вы проверяете наличие пакета с помощью:
установите пакет 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
обновление: новые версии должны использовать php-sqlite3 пакета вместо php5-sqlite . Поэтому используйте это, если вы используете последнюю версию ubuntu:
оригинальный ответ на вопрос здесь:
если ваш phpinfo () не показывает строку pdo_sqlite (в моем случае, на моем сервере Ubuntu), вам просто нужно запустить строки выше, и тогда вам будет хорошо идти.
для более новых версий Ubuntu с PHP 7.0 вы можете получить php-mysql пакет:
затем перезапустите сервер:
на моей машине Windows я должен был дать абсолютный путь к расширению dir в моем php.ini:
на Ubuntu просто выполните
у меня была та же проблема. Решение зависит от ОС. В моем случае у меня есть debian, поэтому для его решения:
установить php-mysql и php7.0-mysql
я отредактировал мой php.ini найдите в /etc/php/7.0/apache2 / php.ini
затем перезапустите apache:
это решает мою проблему
хорошо работал на ubuntu и php 7
вы проверили свой php.ini (проверьте правильное расположение с phpinfo ()), если MySQL и драйвер установлены правильно?
на PHP 5.5 on CentOS я исправил это путем установки .
для справки по установке напишите комментарий, поскольку это зависит от способа установки PHP в вашей системе. Доступные РЕПО являются webtatic и remi .
Я провел последний день, пытаясь выяснить, почему я получаю следующую ошибку. Я запускаю Ubuntu 14.04.
Проблема:
Я заметил, что моя версия PHP-CLI работает под управлением php7.0 но php_info () (веб-версия) отображал php 5.5.9. Несмотря на то, что php_info() сказал, что pdo включен, использование командной строки (CLI) не распознает команду pdo_mysql. Оказывается, mysql был включен для моей старой версии, но не версии CLI. Все, что я сделал установите mysql для php7.0 и он смог работать.
вот что сработало:
чтобы проверить версию:
для того чтобы установить MySQL для php7.0
1) Убедитесь, что ваша версия CLI совпадает с вашей веб-версией
2) если они отличаются, убедитесь, что ваша версия CLI имеет плагин mysql, так как он не поставляется с ним по умолчанию.
проверьте, правильно ли установлен extension_dir в файле конфигурации php. Попробуйте прокомментировать / раскомментировать некоторые расширения и посмотреть, отражено ли это на phpinfo(). Если это не так, либо файл конфигурации php не может быть загружен (неправильное расположение), extension_dir комментируется или устанавливается в неправильное расположение.
добавлять mysql:// к началу строки DSN решена проблема.
Я очень рекомендую mysqllnd вместо mysql из-за вас будет много проблем, таких как преобразование чисел и тип бит оценивает проблему с
я исправил эту проблему на моем Debian 6. Обычно я просто установил php5-common пакета. После установки необходимо перезагрузить веб-сервер (apache или nginx в зависимости от установленного). Тогда я просто делаю lsof на идентификаторе процесса apache ( lsof -p process_id ) как следует :
как вы можете видеть выше, модули устанавливаются по пути к файлу, не известному или направляемому общим путем библиотеки:/ usr/lib/php5/20090626/ . Для вашей установки он может быть другим, но только путь pdo_mysql.Итак, pdo.Итак, mysqli.Итак. Итак, вот почему Drupal или любой другой движок php не смог найти библиотеку и показывает эту ошибку: PDOException: could not find driver
Я просто не знаю, почему он установлен на таком странном пути, для меня это просто ошибка в сценарии установки пакета библиотеки в debian 6. Я решил проблему, создав символ для всех файлов в разделе /usr/lib/php5/20090626/ в /usr/lib/php5/ С помощью этой команды :
ln -s /usr/lib/php5/20090626/* /usr/lib/php5/
это сработало для меня.
Я столкнулся с той же проблемой после удаления пакета php5 (который включает в себя все драйверы), чтобы установить пакет php7. Я фактически установил пакет php7 без модуля mysql.
мне удалось решить его, набрав в терминале:
1) $ apt - поиск кэша php7 в котором перечислены все модули, просматривая модули, которые я нашел,
php7.0-mysql-MySQL модуль для PHP
2) $ sudo apt-get install php7.0-в MySQL
еще одна вещь для подтверждения, поскольку некоторые люди копируют / вставляют пример кода из Интернета, чтобы начать работу. Убедитесь, что вы ввели MySQL здесь:
в некоторых примерах это показывает
У меня была такая же проблема во время выполнения тестов с отдельным php.ini. Мне пришлось добавить эти строки в свой php.ini-файл:
обратите внимание: именно в таком порядке
в моем случае я использовал PDO с php-cli, и он работал нормально.
только когда я попытался подключиться из apache, я получил проблему "отсутствует драйвер", которую я не совсем понял.
простой apt-get install php-mysql ее решили. (Ubuntu 16.04 / PHP7. кредиты перейти к выбранному ответу и комментарий Ивана)
надеюсь, что это может помочь.
для тех, кто использует Symfony2 / 3 и задается вопросом, почему вы получаете эту ошибку. Если вы используете "mapping_types", вы можете столкнуться с этой ошибкой. Причина в том, что" mapping_types " находится на неправильном уровне. Например :
этот "mapping_types" должен быть размещен на этом уровне:
надеюсь, это поможет
для Windows 8.1 / 10 в: \ \ php.в файле ini вы должны раскомментировать строку "extension=pdo_mysql"
у меня было такое же исключение при попытке использовать pdo_sqlite . Проблема заключалась в том, что автоматически создается 20-pdo_sqlite.ini и 20-sqlite3.ini символические ссылки (в /etc/php5/mods-enabled ) были разбиты.
удаление сломанных символических ссылок и добавление их вручную с помощью:
- sudo ln -s /etc/php5/mods-avaliable/pdo_sqlite.ini /etc/php5/mods-enabled/20-pdo_sqlite.ini
- sudo ln -s /etc/php5/mods-avaliable/sqlite3.ini /etc/php5/mods-enabled/20-sqlite3.ini
Примечание: это не будет работать для старых версий php, поскольку они не искали конфигурации в /etc/php5/mods-enabled
Если вы используете sqlite для тестирования, вам понадобится PHP SQLite pdo drive. Вы можете установить их, как показано ниже.
Для Ubuntu 14.04
в ubuntu 16.04 нет php5-sqlite
У меня была такая же проблема при использовании PhpBrew ( 5.5.9 / 7.0.14 ) и попытке создать соединение PDO.
после того, как я попробовал большинство решений на этом посту я сделал следующее:
выполнена sudo apt-get install php7.0 (Linux Mint 17.2 / PHP7.0.16) - установлена свежая версия php
везде, где я иду, я читаю, что путь extension_dir должно быть изменено с ext по абсолютному пути. У меня получилось. Однако при попытке построить сервер ПК моего коллеги я должен был позволить значению ext вместо того, чтобы поставить абсолютный путь.
если вы поставили абсолютный путь, и он делает расширение все еще не найден, considerer пытается как с абсолютным путем, так и ext .
неправильная установка PHP вызывалась
я испытывал ту же проблему. И я надеюсь, что это поможет кому-то, у кого такая же проблема, как у меня.
сценарий
я создал на public папка и запустите phpinfo() искать местоположение моего .
PHP.ini Location = c:\xampp\php\php.ini
имел ту же проблему и просто понял, что веб-сайт работает под php MAMP, но когда вы вызываете команду, он запускает mac(Если путь bash не изменен). у вас будет проблема, когда mac не имеет этих расширений.
запустите php-i, чтобы узнать загруженные расширения и установить те, которые вы пропустили. или run ' / приложения/MAMP/bin/php / php5.3.6/bin / php artisan ' использовать mamp's
Я только что установил 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?
Поиск в интернете не помог, все, что я получаю, это обмен экспертами и примеры, но никаких решений.
Посмотрите в вашем php.ini' file and uncomment расширении = php_pdo_mysql.dll . The path to your php.ini` файл можно найти, посмотрев на ваш phpinfo (). К вашему сведению для будущих читателей, если вы получите эту ошибку и GoDaddy ваш хост, войдите в свою учетную запись администратора. Детали хостинга-> Языки программирования. Обновите версию PHP до последней версии или хотя бы 5,4 @styfle 1up, на Linux-машине я установил extension=msql.so и все работает! Для кого это может касаться: если вы используете php 7.1+ в докере, вы можете docker exec войти в контейнер и запустить docker-php-ext-install pdo pdo_mysql .Вам нужен модуль с именем pdo_mysql. Ищете следующий в phpinfo (),
@ZZ Coder Этого нет в phpinfo (). Вы знаете, как я могу установить pdo_mysql ? @letseatfood . Как ты это понял? У меня такая же проблема! Я могу порекомендовать пакет Ubuntu "php5-mysql" для установки поддержки PDO для MySQL Для Ubuntu 16.04 и PHP7 используйте sudo apt-get install php-mysqlУбедитесь, что на вашем сервере установлено расширение mysql.
В Ubuntu / Debian вы проверяете пакет с помощью:
Установите пакет 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
xenial + 4). При попытке запустить команду sudo apt-get установите php-mysql в Ubuntu 16.04 с nginx php fpm, я также перезапускаю php fpm, а затем перезапускаю nginx.
В настоящее время это php-mysql и php7.1-mysql. Надеюсь, что это модель движется вперед.Обновление : более новые версии должны использовать php-sqlite3 пакет вместо php5-sqlite . Так что используйте это, если вы используете последнюю версию Ubuntu:
Оригинальный ответ на вопрос здесь:
Если ваш phpinfo () не показывает строку pdo_sqlite (в моем случае, на моем сервере Ubuntu), вам просто нужно запустить строки выше, и тогда вы будете в порядке.
Почему вы дали инструкции для sqlite, когда OP использует MySQL? @ Andrew, если вы используете pdo_sqlite и не устанавливаете, php5-sqlite вы получаете только PDOException без информации об отсутствующем sqlite и попробуйте установить php5-mysql дважды. Обратите внимание, что php5-sqlite устарел и может быть недоступен для вашей системы, то есть Ubuntu 16.04. Вместо этого установите php-sqlite3. @briankip Конечно, если вы пытаетесь подключиться к SQLite, и этот драйвер отсутствует. Но ОП пытается подключиться к MySQL. Установка sqlite могла / не могла решить его проблему.Для более новых версий Ubuntu с PHP 7.0 вы можете получить php-mysql пакет:
Затем перезапустите ваш сервер:
Я думаю, что в наши дни вы должны быть конкретны с версией sudo apt-get install php7.2-mysqlЯ была такая же проблема. Решение зависит от ОС. В моем случае у меня есть Debian, поэтому для его решения:
Установите php-mysql и php7.0-mysql
Я php.ini изменил свое местоположение в /etc/php/7.0/apache2/php.ini
Затем перезапустите Apache:
Это решает мою проблему
Как и в сторону для тех , кто , как я нашел , что это не вполне хватает , и не хотят , чтобы пройти через шаги , чтобы полностью удалить php5 перед тем проверив , что php7 будет работать: a2dismod php5 , a2enmod php7.0 и , service apache2 restart наконец , получил меня обратно и работает.На моей машине с Windows мне нужно было указать абсолютный путь к каталогу расширений в моем php.ini:
Я только что подтвердил, что это правда (Win2008). Странно - другие расширения работают только с рекомендованным extension_dir = "ext" , но не с этим. тоже самое. добавил путь и начал работать. Windows10, php7.1На Ubuntu просто выполнить
Я был за Symfony2 и Ubuntu. Pdo_mysql не найден ([PDOException] не удалось найти драйвер). Это решило проблему. Для меня мне не хватало Postgresql, так что это закончилось так: sudo apt-get install php5-pgsql @Kzqai 2:30 утра, и вы только что решили мою проблему, я не использовал mysql, я использовал postgres (> ლ)хорошо работал на Ubuntu и PHP 7
Это сработало для меня, хотя я не использую php7, но php5.6. Но у меня есть 7 установленных. Я установил 5.6 позже и переключился на это без удаления php7Проверьте, доступен ли модуль с php -m | grep pdo_mysql .
Если нет, для PHP 7.2 вы можете установить соответствующий пакет с sudo apt install php7.2-mysql .
Используйте аналогичную команду в других версиях PHP и менеджерах пакетов.
Вы проверяли свой php.ini (проверьте правильность расположения с помощью phpinfo ()), если MySQL и драйвер установлены правильно?
Я смотрю в php.ini, но что мне искать? Я вижу раздел, который начинается с [MySQL]Для PHP 5.5 на CentOS я это исправил, установив php55-mysqlnd пакет.
Чтобы получить помощь в установке, напишите комментарий, так как это зависит от того, как PHP установлен в вашей системе. Доступные репо есть webtatic и remi .
для Windows 8.1 / 10 в файле: \\ php.ini вы должны раскомментировать строку "extension = pdo_mysql"
Добавление mysql:// в начало строки DSN решило проблему.
Я провел последний день, пытаясь выяснить, почему я получаю следующую ошибку. Я использую Ubuntu 14.04.
Проблема:
я заметил, что моя версия PHP-CLI работала с php7.0, но php_info () (веб-версия) отображала php 5.5.9. Хотя php_info () говорит, что pdo был включен, использование командной строки (CLI) не распознало команду pdo_mysql. Оказывается, mysql был включен для моей старой версии, но не для версии CLI. Все, что я сделал, это установил mysql для php7.0, и он смог работать.
Вот что сработало:
Чтобы проверить версию:
Установить MySQL для php7.0
1) убедитесь, что ваша версия CLI совпадает с вашей веб-версией
2) Если они отличаются, убедитесь, что ваша версия CLI имеет подключаемый модуль mysql, поскольку он не поставляется с ним по умолчанию.
Проверьте, правильно ли установлен extension_dir в файле конфигурации php. Попробуйте прокомментировать / раскомментировать некоторые расширения и посмотреть, отражено ли это в phpinfo (). Если этого не произойдет, то ни один из файлов конфигурации php не может быть загружен (неправильное местоположение) extension_dir закомментировано или установлено в неправильное местоположение.
У меня была такая же проблема при запуске тестов с отдельным php.ini. Мне пришлось добавить эти строки в мой собственный файл php.ini:
Обратите внимание: именно в этом порядке
Я настоятельно рекомендую mysqllnd вместо этого, mysql потому что у вас было бы много проблем, таких как преобразование чисел, и битовый тип оценивает проблему с mysql расширением.
на Ubuntu установить mysqllnd с помощью следующей команды:
Я исправил эту проблему на своем Debian 6. Обычно я только что установил php5-common пакет. После установки вам необходимо перезапустить ваш веб-сервер (apache или nginx в зависимости от того, какой вы установили). Затем я просто делаю lsof в apache процесс id ( lsof -p process_id ) следующим образом:
Как вы можете видеть выше, модули устанавливаются по пути к файлу, который не известен или определяется общим путем к библиотеке: / usr/lib/php5/20090626/ . Для вашей установки он может отличаться, но только путь pdo_mysql.so, pdo.so, mysqli.so. Вот почему Drupal или любой другой движок php не может найти библиотеку и показывает эту ошибку: PDOException: could not find driver
Я просто не знаю , почему он установлен на таком странном пути, для меня это просто ошибка в библиотеке сценария установки пакета в Debian 6. Я решил проблему, создав символический для всех файлов в соответствии /usr/lib/php5/20090626/ с /usr/lib/php5/ этой командой:
Я только что установил 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).
Это как-то связано с моей установкой PHP?
Поиск в Интернете не помог, все, что я получаю, это эксперты-обмен и примеры, но никаких решений.
<? $dsn = 'mysqli:dbname=websiteusers;host=localhost'; $user = 'root'; $password = '123'; try < $dbh = new PDO($dsn, $user, $password); >catch (PDOException $e) < echo 'Подключение не удалось: ' . $e->getMessage(); >?> Это дает ошибку не удалось найти драйвер. Что я могу сделать?
Я проверил, что php_pdo_sqlite.dll,php_sqlite3.dll существует в папке C:\xampp\php\ext, и эти строки являются файлом php.ini: extension=php_pdo_sqlite.dll extension=php_sqlite3.dll здесь в разделе pdo_sqlite в phpinfo() pdo_sqlite PDO Driver for SQLite 3.x enabled SQLite Library 3.8.4.3 PDO PDO.
Вам нужен модуль под названием pdo_mysql. Ищу следующих в phpinfo(),
Убедитесь, что на вашем сервере установлено расширение mysql.
В Ubuntu/Debian вы проверяете наличие пакета с помощью:
Установите пакет 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
Обновление: более новые версии должны использовать пакет php-sqlite3 вместо php5-sqlite . Так что используйте это, если вы используете последнюю версию ubuntu:
Оригинальный ответ на вопрос находится здесь:
Если ваш phpinfo() не показывает строку pdo_sqlite (в моем случае, на моем сервере Ubuntu), вам просто нужно запустить строки выше, и тогда вам будет хорошо идти.
я работаю с symfony, и когда я набираю в консоли это: php приложение / консоль doctrine:schema:create у меня есть следующие ошибки [Doctrine\DBAL\Exception\DriverException] Исключение произошло в драйвере: не удалось найти драйвер [Doctrine\DBAL\Driver\PDOException] не удалось найти водителя.
Для более новых версий Ubuntu, которые имеют PHP 7.0, вы можете получить пакет php-mysql :
Затем перезагрузите свой сервер:
У меня была та же проблема. Решение зависит от OS. В моем случае у меня есть debian, так что решить его:
Установите php-mysql и php7.0-mysql
Я отредактировал свой php.ini locate at /etc/php/7.0/apache2/php.ini
Это решает мою проблему
На моей машине Windows я должен был дать абсолютный путь к расширению dir в моем php.ini:
On Ubuntu просто выполните
Проверьте, доступен ли модуль с php -m | grep pdo_mysql .
Если нет, то для PHP 7.2 вы можете установить соответствующий пакет с sudo apt install php7.2-mysql .
Используйте аналогичную команду в других версиях PHP и менеджерах пакетов.
хорошо работал на ubuntu и php 7
Проверили ли вы свой php.ini (проверьте правильность расположения с помощью phpinfo()), если MySQL и драйвер установлены правильно?
Для PHP 5.5 на CentOS я исправил это, установив пакет php55-mysqlnd .
Для получения справки по установке напишите комментарий, так как это зависит от способа установки PHP в вашей системе. Доступные РЕПО-это webtatic и remi .
для Windows 8.1/10 в файле: \\php.ini вы должны раскомментировать строку "extension=pdo_mysql"
Добавление mysql:// в начало строки DSN решило проблему.
Проверьте, правильно ли установлен extension_dir в конфигурационном файле php. Попробуйте прокомментировать / раскомментировать некоторые расширения и посмотреть, отражается ли это на phpinfo(). Если это не так, то либо конфигурационный файл php не может быть загружен (неправильное расположение), либо extension_dir комментируется или устанавливается в неправильное расположение.
Я провел последний день, пытаясь понять, почему я получаю следующую ошибку. Я бегу Ubuntu 14.04.
Проблема :
Я заметил, что моя версия PHP-CLI работает под управлением php7.0, но php_info() (веб-версия) отображает php 5.5.9. Несмотря на то, что php_info() сказал, что pdo включен, использование командной строки (CLI) не распознало команду pdo_mysql. Оказывается, что mysql был включен для моей старой версии, но не для версии CLI. Все, что я сделал, это установил mysql для php7.0, и он смог работать.
Именно этим и занимался:
Чтобы проверить версию:
Чтобы установить mysql для php7.0
1) Убедитесь, что ваша версия CLI совпадает с вашей веб-версией
2) если они разные, убедитесь, что ваша версия CLI имеет плагин mysql, так как он не поставляется с ним по умолчанию.
У меня была такая же проблема во время выполнения тестов с отдельным php.ini. Мне пришлось добавить эти строки в свой собственный файл php.ini:
Обратите внимание: именно в таком порядке
Я очень рекомендую mysqllnd вместо mysql , потому что у вас будет много проблем, таких как преобразование чисел и битовый тип вычисляет проблему с расширением mysql .
на ubuntu установите mysqllnd со следующей командой:
Вызывалась неправильная установка PHP
Я испытывал ту же проблему. И я надеюсь, что это поможет кому-то, у кого есть такая же проблема, как у меня.
Сценарий
Я создал файл phpinfo.php в папке public и запустил phpinfo() , чтобы найти местоположение моего файла php.ini .
PHP.ini местоположение = c:\xampp\php\php.ini
Проблема
Вызов c:\xampp\htdocs> php -v вернул PHP 7.2.3 , но phpinfo.php показал PHP 7.2.2 .
Решение
Вместо звонка
что дало мне эту ошибку, я использовал
и это сработало.
Я исправил эту проблему на своем Debian 6. Обычно я только что установил пакет php5-common . После установки вы должны перезапустить свой веб-сервер (apache или nginx в зависимости от того, какой из них вы установили). Затем я просто делаю lsof на идентификаторе процесса apache ( lsof -p process_id ) следующим образом :
Как вы можете видеть выше, модули устанавливаются по неизвестному пути к файлу или руководствуются общим путем к библиотеке: / usr/lib/php5/20090626/ . Для вашей установки он может быть другим, но только путь pdo_mysql.so, pdo.so, mysqli.so. Итак, вот почему Drupal или любой другой движок php не смог найти библиотеку и показывает эту ошибку: PDOException: could not find driver
Я просто не знаю, почему он установлен на таком странном пути, для меня это просто ошибка в скрипте установки пакета библиотеки в debian 6. Я решил эту проблему, создав символ для всех файлов в диапазоне от /usr/lib/php5/20090626/ до /usr/lib/php5/ с помощью этой команды :
ln -s /usr/lib/php5/20090626/* /usr/lib/php5/
Это сработало для меня.
Я столкнулся с той же проблемой после того, как удалил пакет php5 (который также включает в себя все драйверы), чтобы установить пакет php7. На самом деле я установил пакет php7 без модуля mysql.
Мне удалось решить ее, набрав terminal:
1) $ apt - поиск кэша php7 в котором перечислены все модули, просматривая найденные мной модули,
php7.0-mysql-MySQL модуль для PHP
2) $ sudo apt-get install php7.0-mysql
Вот и все. Это сработало для меня в моей системе linux.
(используйте соответствующую версию php, ваша может быть php5)
Просто еще одна вещь, чтобы подтвердить, как некоторые люди копируют / вставляют пример кода из Интернета, чтобы начать работу. Убедитесь, что вы ввели MySQL здесь:
В некоторых примерах это показывает
В моем случае я использовал PDO с php-cli, и он работал нормально.
Только когда я попытался подключиться с apache, я получил проблему "missing driver", которую я не совсем понял.
Простой apt-get install php-mysql решил его. (Ubuntu 16.04 / PHP7. кредиты идут к выбранному ответу & комментарий Ивана)
Надеюсь, это поможет.
Похожие вопросы:
<? $dsn = 'mysqli:dbname=websiteusers;host=localhost'; $user = 'root'; $password = '123'; try < $dbh = new PDO($dsn, $user, $password); >catch (PDOException $e) < echo 'Подключение не удалось: '.
Я проверил, что php_pdo_sqlite.dll,php_sqlite3.dll существует в папке C:\xampp\php\ext, и эти строки являются файлом php.ini: extension=php_pdo_sqlite.dll extension=php_sqlite3.dll здесь в разделе.
я работаю с symfony, и когда я набираю в консоли это: php приложение / консоль doctrine:schema:create у меня есть следующие ошибки [Doctrine\DBAL\Exception\DriverException] Исключение произошло в.
Я работаю над Centos в Yii2. Я обновил php 5.4 до php 7.1.19, но после обновления он показывает мне ошибку: Исключение базы данных-yii\db\Exception не удалось найти драйвер, вызванный: PDOException.
Я только что установил 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).
Как это связано с моей установкой PHP?
Поиск в Интернете не помог, все, что я получаю, это обмен экспертами и примеры, но никаких решений.
ОТВЕТЫ
Ответ 1
Вам нужен модуль pdo_mysql. Поиск следующего в phpinfo(),
Ответ 2
Убедитесь, что на вашем сервере установлено расширение mysql.
В Ubuntu/Debian вы проверяете пакет с помощью:
Установите пакет 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
Ответ 3
Обновление: более новые версии должны использовать пакет php-sqlite3 вместо php5-sqlite . Поэтому используйте это, если используете последнюю версию ubuntu:
Оригинальный ответ на вопрос:
Если ваш phpinfo() не показывает строку pdo_sqlite (в моем случае на моем сервере Ubuntu), вам просто нужно запустить строки выше, и тогда вам будет хорошо идти.
Ответ 4
Для более новых версий Ubuntu с PHP 7.0 вы можете получить пакет php-mysql :
Затем перезагрузите сервер:
Ответ 5
На моей машине с Windows мне пришлось указать абсолютный путь к расширению dir в моем php.ini:
Ответ 6
Я была такая же проблема. Решение зависит от ОС. В моем случае у меня есть Debian, поэтому для его решения:
Установите php-mysql и php7.0-mysql
Я отредактировал свой php.ini в /etc/php/7.0/apache2/php.ini
Затем перезапустите Apache:
Это решает мою проблему
Ответ 7
В Ubuntu просто выполните
Ответ 8
хорошо работал на ubuntu и php 7
Ответ 9
Вы проверили свой php.ini(проверьте правильность расположения с помощью phpinfo()), если MySQL и драйвер установлены правильно?
Ответ 10
Ответ 11
Для PHP 5.5 on CentOS я исправил это, установив пакет php55-mysqlnd .
Для помощи в установке, напишите комментарий, поскольку он зависит от способа установки PHP в вашей системе. Доступные репо - webtatic и remi .
Ответ 12
Я провел последний день, пытаясь понять, почему я получил следующую ошибку. Я запускаю Ubuntu 14.04.
Проблема:
Я заметил, что моя версия PHP-CLI запускала php7.0, но php_info() (веб-версия) отображала php 5.5.9. Несмотря на то, что php_info() сказал, что pdo включен, использование командной строки (CLI) не распознает команду pdo_mysql. Оказывается, mysql был включен для моей старой версии, но не для версии CLI. Все, что я сделал, это установить mysql для php7.0, и он смог работать.
Это то, что сработало:
Чтобы проверить версию:
Чтобы установить mysql для php7.0
1) убедитесь, что ваша версия CLI такая же, как ваша веб-версия
2) Если они отличаются друг от друга, убедитесь, что ваша версия CLI имеет подключаемый модуль mysql, поскольку он не поставляется с ним по умолчанию.
Ответ 13
для Windows 8.1/10 в файле:\\php.ini вы должны раскомментировать строку "extension = pdo_mysql"
Ответ 14
Проверьте, доступен ли модуль с php -m | grep pdo_mysql php -m | grep pdo_mysql .
Если нет, для PHP 7.2 вы можете установить соответствующий пакет с помощью sudo apt install php7.2-mysql .
Используйте аналогичную команду в других версиях PHP и менеджерах пакетов.
Ответ 15
Добавление mysql:// в начало строки DSN устраняет проблему.
Ответ 16
Проверьте правильность установки extension_dir в файле конфигурации php. Попробуйте прокомментировать/раскомментировать некоторые расширения и посмотреть, отразилось ли это на phpinfo(). Если это не так, либо файл конфигурации php не может быть загружен (неправильное местоположение). Extension_dir комментируется или устанавливается в неправильное местоположение.
Ответ 17
Ответ 18
Я очень рекомендую mysqllnd вместо mysql из-за того, что у вас будет много проблем, таких как преобразование числа и тип бит, и проблема с расширением mysql .
на ubuntu install mysqllnd со следующей командой:
Ответ 19
Я исправил эту проблему на своем Debian 6. Обычно я только что установил пакет php5-common . После установки вам необходимо перезапустить веб-сервер (apache или nginx в зависимости от того, какой из них вы установили). Затем я просто делаю lsof на id процесса apache ( lsof -p process_id ) следующим образом:
Как вы можете видеть выше, модули устанавливаются на пути к файлу, который неизвестен или управляется общим путем библиотеки:/ usr/lib/php5/20090626/ . Для вашей установки это может быть другое, но только путь к pdo_mysql.so, pdo.so, mysqli.so. Вот почему Drupal или любой другой php-движок не смогли найти библиотеку и показали, что ошибка: PDOException: could not find driver
Я просто не знаю, почему он установлен на такой странный путь, для меня это просто ошибка в установке пакета библиотеки script в debian 6. Я решил проблему, создав символический для всех файлов под /usr/lib/php5/20090626/ , чтобы /usr/lib/php5/ с помощью этой команды:
ln -s /usr/lib/php5/20090626/* /usr/lib/php5/
Ответ 20
У меня возникла такая же проблема после того, как я удалил пакет php5 (включая все драйверы), чтобы установить пакет php7. Я фактически установил пакет php7 без модуля mysql.
Мне удалось решить это, набрав терминал:
1) $apt-cache search php7 который перечисляет все модули, просматривая найденные модули,
php7.0-mysql - модуль MySQL для PHP
2) $sudo apt-get install php7.0-mysql
Что это. Это работало для меня в моей Linux-системе.
(используйте соответствующую версию php, ваш может быть php5)
Ответ 21
Просто еще одна вещь, чтобы подтвердить, что некоторые люди копируют/вставляют пример кода из Интернета, чтобы начать. Убедитесь, что вы здесь MySQL:
В некоторых примерах это показывает
Ответ 22
У меня была такая же проблема во время тестов с отдельным php.ini. Мне пришлось добавить эти строки в свой собственный файл php.ini:
Примечание: точно в этом порядке
Ответ 23
В моем случае я использовал PDO с php-cli, и он работал нормально.
Только когда я попытался подключиться от apache, у меня возникла проблема с отсутствующим драйвером, что я не совсем понял.
Простой apt-get install php-mysql решил. (Ubuntu 16.04/PHP7. Кредиты идут к выбранному ответу и комментарию Ивана)
Надеюсь, это поможет.
Ответ 24
Для тех, кто использует Symfony2/3, и задается вопросом, почему вы получаете эту ошибку. Если вы используете "mapping_types" , вы можете столкнуться с этой ошибкой. Причина в том, что "mapping_types" помещен на неправильном уровне. Например:
Это "mapping_types" должно быть размещено на этом уровне:
Я надеюсь, что это поможет
Ответ 25
Куда бы я ни пошел, я читал, что путь extension_dir должен быть изменен с ext на абсолютный путь. Это сработало для меня. Однако, когда я пытался собрать сервер моего коллегиного ПК, мне пришлось допустить значение ext вместо указания абсолютного пути.
Если вы указали абсолютный путь, и он все еще не найден, попробуйте как абсолютный путь, так и ext .
Ответ 26
Некорректная установка PHP
Я испытывал ту же проблему. И я надеюсь, что это поможет кому-то, кто сталкивается с такой же проблемой, как я.
сценарий
Я создал phpinfo.php файл в public папке и запустить phpinfo() , чтобы посмотреть на место моего php.ini файла.
Расположение PHP.ini = c:\xampp\php\php.ini
проблема
Вызов c:\xampp\htdocs> php -v вернул PHP 7.2.3 но phpinfo.php показал PHP 7.2.2 .
Решение
Вместо звонка
который дал мне эту ошибку, я использовал
и это сработало.
Ответ 27
Проверьте правильный путь в extension_dir в вашем phpinfo().
Ответ 28
Эти 3 команды сбрасывают права доступа к файлам и папкам на веб-сайте и заставляют его снова работать.
Ответ 29
Это сработало для меня.
Ответ 30
У меня было то же исключение при попытке использовать pdo_sqlite . Проблема заключалась в том, что автоматически созданные символические ссылки 20-pdo_sqlite.ini и 20-sqlite3.ini (в /etc/php5/mods-enabled ) были сломаны.
Удаление сломанных символических ссылок и их добавление вручную:
- sudo ln -s /etc/php5/mods-avaliable/pdo_sqlite.ini /etc/php5/mods-enabled/20-pdo_sqlite.ini
- sudo ln -s /etc/php5/mods-avaliable/sqlite3.ini /etc/php5/mods-enabled/20-sqlite3.ini
Примечание. Это не будет работать для старых версий php, поскольку они не искали configs в /etc/php5/mods-enabled
Читайте также: