PDOException "could not find driver"
Ich habe gerade installierte Debian Lenny mit Apache, MySQL und PHP und ich erhalte eine PDOException could not find driver
.
Dies ist die spezifische Codezeile bezieht sich auf:
$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS)
DB_HOST
, DB_NAME
, DB_USER
, und DB_PASS
sind Konstanten, die ich definiert haben. Es funktioniert gut auf den Produktions-server (und auf meiner vorherigen Ubuntu-Server-setup).
Ist dies etwas zu tun mit meiner PHP-installation?
Suche im internet hat nicht geholfen, ich erhalte Experten-Austausch und Beispiele, aber keine Lösungen.
Schauen Sie in Ihren
Zur info an alle zukünftigen Leser, wenn Sie diesen Fehler erhalten, und GoDaddy ist dein host, loggen Sie sich mit Ihrem admin-account. Hosting-Details->Programmiersprachen. Aktualisieren Sie Ihre PHP-version auf die neueste oder zumindest 5.4
Ich aktualisiert, aber immer noch eine Fehlermeldung erhalten (GoDaddy)
1up, Auf einem Linux-Rechner, ich
php.ini' file and uncomment
extension=php_pdo_mysql.dll. The path to your
php.ini` - Datei kann gefunden werden, indem man an deiner phpinfo().Zur info an alle zukünftigen Leser, wenn Sie diesen Fehler erhalten, und GoDaddy ist dein host, loggen Sie sich mit Ihrem admin-account. Hosting-Details->Programmiersprachen. Aktualisieren Sie Ihre PHP-version auf die neueste oder zumindest 5.4
Ich aktualisiert, aber immer noch eine Fehlermeldung erhalten (GoDaddy)
1up, Auf einem Linux-Rechner, ich
extension=msql.so
- und es funktioniert!InformationsquelleAutor Mike Moore | 2010-05-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie ein Modul namens pdo_mysql. Suche für folgende in der Ausgabe von phpinfo(),
pdo_mysql
?Wie hast du das herausgefunden? Ich habe das gleiche problem!!!
Empfehlen kann ich die Ubuntu "php5-mysql" Paket für die Installation PDO-Unterstützung für MySQL
Beachten Sie, dass für diejenigen, die sich mit Apache oder anderen Webserver, benötigt man den Apache neu starten, damit die änderungen wirksam werden:
sudo systemctl restart httpd.service
Für Ubuntu 16.04 und PHP7 verwenden
sudo apt-get install php-mysql
InformationsquelleAutor ZZ Coder
Den dsn in Ihrem code verrät Sie versuchen, verbinden mit dem mysql-Treiber. Deine Fehlermeldung zeigt an, dass dieser Treiber nicht verfügbar ist.
Überprüfen Sie, ob die mysql-Erweiterung auf Ihrem server installiert.
In Ubuntu/Debian-Sie prüfen, ob das Paket mit:
Installieren Sie das php5-mysql Paket, wenn Sie es nicht haben.
In Ubuntu/Debian, die Sie verwenden können:
sudo apt-get install php5-mysql
sudo apt-get install php7.0-mysql
Schließlich, um es zu bekommen arbeiten, müssen Sie starten Sie Ihren web-server:
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/nginx restart
ahh... der Neustart ist, was mich gebissen!
Ich hatte das gleiche Problem, stellen Sie sicher, dass Sie bei einem Neustart von php5-fpm!
Verbrachte fast eine ganze Nacht versucht zu knacken diese, bis ich sah Ihre Antwort. Hatte alles richtig gemacht, aber vergessen, den apache neu starten.
php-mysql ist schon die neueste version (1:7.1+49+deb.sury.org~xenial+4). Wenn Sie versuchen, führen Sie Befehl sudo apt-get install php-mysql in ubuntu 16.04 mit nginx php-fpm habe ich auch neu gestartet, die php-fpm und starten Sie den nginx.
InformationsquelleAutor ghbarratt
Update: neuere Versionen verwenden sollten
php-sqlite3
- Paket stattphp5-sqlite
. So verwenden Sie diese, wenn Sie mit einer aktuellen ubuntu-version:Ursprünglichen Antwort auf die Frage ist hier:
Wenn Ihr phpinfo() zeigt nicht das pdo_sqlite Zeile (in meinem Fall, auf meinem Ubuntu-Server), die Sie gerade brauchen, um ausführen die Zeilen von oben und dann werden Sie gut zu gehen.
wenn Sie
pdo_sqlite
und nicht installierenphp5-sqlite
bekommen Sie nur einenPDOException
mit keine info über fehlende sqlite zu installieren und versuchen Siephp5-mysql
zweimal.Beachten Sie, dass php5-sqlite ist veraltet und möglicherweise nicht mit Ihrem system nicht mehr, dh Ubuntu 16.04. Installieren von php-sqlite3 statt.
der Fehler ist genau der gleiche.
Natürlich ist es, wenn Sie versuchen, eine Verbindung zu SQLite und dass Treiber fehlen. Aber die OP versucht, die MySQL-Verbindung. Die Installation von sqlite würde/könnte nicht, sein problem zu lösen.
InformationsquelleAutor Sudipta Chatterjee
Den neueren Versionen von Ubuntu, PHP 7.0 können Sie die
php-mysql
Paket:Dann starten Sie Ihren server neu:
InformationsquelleAutor ThomasAFink
Auf meinem Windows-Rechner, die ich hatte, zu geben den absoluten Pfad zu der extension dir in meinem php.ini:
extension_dir = "c:\php5\ext"
extension_dir = "ext"
, aber nicht diese.gleiche situation hier :s weeeeird Mann. weeeird.
hier gilt das gleiche. Hinzugefügt, den Pfad und begann mit der Arbeit. Windows10, php7.1
InformationsquelleAutor berdzi
Ich hatte das gleiche Problem. Die Lösung hängt davon ab, OS. In meinem Fall, ich habe debian, also, um es zu lösen:
Install php-mysql-und php7.0-mysql
Bearbeitete ich meine
php.ini
suchen Sie unter /etc/php/7.0/apache2/php.iniDann den apache neu starten:
Löst dies mein problem
a2dismod php5
,a2enmod php7.0
, undservice apache2 restart
endlich mich wieder auf und läuft.InformationsquelleAutor onlyme
Unter Ubuntu führen Sie einfach
Für mich, die mir fehlte Postgresql, so dass es endete als:
sudo apt-get install php5-pgsql
2:30 jetzt bin und du nur mein problem gelöst, ich war nicht mit mysql war ich mit der postgres - (>ლ)
InformationsquelleAutor Dmitry Sobolev
gut funktioniert auf ubuntu und php 7
InformationsquelleAutor Moses Nandwa
Haben Sie überprüfen Sie Ihre php.ini (überprüfen Sie die richtige Lage mit phpinfo ()), wenn MySQL und der Treiber ist korrekt installiert?
[MySQL]
InformationsquelleAutor cem
Beim hinzufügen von diesen in Ihre php.ini gewährleisten php_pdo.dll Referenz zuerst, bevor Sie den db-Treiber-dlls da es sonst ebenfalls zu dieser Fehlermeldung führen zu können. Sie wie folgt hinzufügen:
php_pdo.dll
- Modul ist nicht erforderlich (auch nicht vorhanden) nicht mehr. php.net/manual/en/pdo.installation.php ist wohl die ultimative Antwort auf diese Frage.InformationsquelleAutor Paul Foster
Für
PHP 5.5
aufCentOS
ich behoben, durch die Installation derphp55-mysqlnd
Paket.Für Hilfe bei der Installation, einen Kommentar schreiben, wie es hängt davon ab, wie PHP auf Ihrem system installiert ist. Verfügbar repo ' s sind
webtatic
undremi
.InformationsquelleAutor SimonW
Verbrachte ich den letzten Tag versuchen, um herauszufinden, warum ich immer die folgende Fehlermeldung. Ich bin mit Ubuntu 14.04.
Das Problem:
Ich bemerkte, dass meine PHP-CLI-version lief php7.0 aber php_info() (web-version) wurde die Anzeige von php 5.5.9. Obwohl php_info() sagte: pdo aktiviert war, über die Befehlszeile (CLI) war nicht die Anerkennung der pdo_mysql-Befehl. Es stellt sich heraus, dass mysql aktiviert wurde, für meine alte version, aber nicht die CLI-version. Alles, was ich Tat war die Installation von mysql für php7.0 und es war in der Lage zu arbeiten.
Dies ist, was funktioniert:
Prüfen Sie die version:
Mysql installieren für php7.0
1) stellen Sie sicher, dass die CLI-version ist die gleiche wie die web-version
2) Wenn Sie unterschiedlich sind, stellen Sie sicher, dass die CLI-version hat der mysql-plug-in, da Sie nicht mit ihm kommen als Standard.
InformationsquelleAutor Growling Flea
für Windows 8.1/10 in :\\php.ini-Datei sollten Sie die Auskommentierung der Zeile "extension=pdo_mysql"
InformationsquelleAutor Egor Doynikov
Prüfen, ob extension_dir in der php-Konfigurationsdatei richtig eingestellt. Versuchen Sie, um zu kommentieren/kommentieren Sie einige Erweiterungen und sehen, ob es spiegelt sich auf phpinfo().
Wenn es nicht dann ist entweder die php-config Datei nicht geladen werden kann (falsche Lage) extension_dir auskommentiert ist oder auf der falschen Position.
InformationsquelleAutor hserge
In meinem Fall meine DSN-string falsch war, genauer gesagt, es ist nicht enthalten
mysql://.
ich hätte eigentlich eine andere Fehlermeldung, vielleicht etwas wie 'DSN-string nicht angeben, Treiber/Protokoll.'Hinzufügen
mysql://
zu Beginn der DSN-string ist das Problem behoben.InformationsquelleAutor gposton
Das problem ist eine fehlende php-mysql-Bibliothek. Bei CentOs habe ich behoben, indem Sie
# yum install php-mysql
und dann Neustarten von apache mit# /bin/systemctl restart httpd.service
Beachten Sie, dass die Benennung unterscheidet sich etwas von den debian/ubuntu-basierte Distributionen, php->php5 und httpd->apache2.InformationsquelleAutor Japheth Ongeri - inkalimeva
Ich sehr empfehlen
mysqllnd
stattmysql
denn, Sie würden sich eine Menge Probleme, wie etwa die Anzahl konvertieren und bit-Typ wertet problem mitmysql
Erweiterung.auf ubuntu installieren
mysqllnd
mit folgenden Befehl:InformationsquelleAutor MSS
Behob ich dieses Problem auf meinem Debian 6.
Normalerweise hatte ich gerade installiert
php5-common
Paket. Nach der installation, müssen Sie starten Sie Ihren web-server (apache oder nginx je nachdem, welche Sie installiert haben).Dann habe ich nur eine
lsof
auf der apache-Prozess-id (lsof -p process_id
) wie folgt ein :Wie Sie oben sehen können, werden die Module montiert auf einem Pfad der Datei nicht bekannt ist, oder geführt durch common library path: /
usr/lib/php5/20090626/
. Für die installation kann es anders sein, sondern nur der Pfad von pdo_mysql.so, pdo.so, mysqli.so. Also, das ist, warum Drupal oder andere php-engine nicht finden konnte, die Bibliothek und zeigt, dass die Fehler:PDOException: could not find driver
Ich weiß nur nicht, warum es installiert ist, auf eine so eigenartige Weg, für mich ist es einfach ein Fehler in der library-Paket Installations-Skript bei debian 6.
Ich löste das Problem, indem Sie einen symbolischen für alle Dateien unter
/usr/lib/php5/20090626/
zu/usr/lib/php5/
mit diesem Befehl :ln -s /usr/lib/php5/20090626/* /usr/lib/php5/
InformationsquelleAutor douggynix
Ich Stand vor dem gleichen Problem, nachdem ich entfernt das php5-Paket (mit allen Treibern), um zu installieren, php7-Paket. Ich eigentlich installiert php7 Paket ohne mysql-Modul.
Habe ich es geschafft, es zu lösen, indem Sie in das terminal:
1) $ apt-cache search php7
listet alle Module suchen die Module durch, fand ich,
php7.0-mysql - MySQL-Modul für PHP
2) $ sudo apt-get install php7.0-mysql
Das ist es. Es funktionierte für mich auf meinem linux-system.
(verwenden Sie die entsprechende php-version, deins könnte php5)
InformationsquelleAutor Roshimon
Nur eine andere Sache, um zu bestätigen, wie manche Menschen sind kopieren/einfügen von Beispiel-code aus dem Internet, um loszulegen. Stellen Sie sicher, dass MySQL hier eingetragen:
In einigen Beispielen dies zeigt
InformationsquelleAutor Joe
Ich hatte das gleiche problem während der Ausführung von tests mit separaten php.ini. Ich musste diese Zeilen, um meine eigene php.ini-Datei:
Hinweis: Genau in dieser Reihenfolge
InformationsquelleAutor Facedown
In meinem Fall, ich war mit PDO mit php-cli, und es funktionierte gut.
Nur, wenn ich versuchte, eine Verbindung von apache, ich habe die "fehlende Treiber" - Problem, was ich nicht ganz verstehen.
Einem einfachen
apt-get install php-mysql
gelöst. (Ubuntu 16.04 /PHP7. credits gehen an die ausgewählte Antwort & Ivan ' s Kommentar)Hoffe, es kann helfen.
InformationsquelleAutor Balmipour
Für diejenigen, die sich mit Symfony2/3 und Wundern sich, warum Sie diese Fehlermeldung bekommen. Wenn Sie "mapping_types", könnte man diesem Fehler begegnen. Der Grund dafür ist, dass "mapping_types" platziert wird auf der falschen Ebene. Zum Beispiel :
Diese "mapping_types" gelegt werden muss, auf dieser Ebene :
Ich hoffe, das hilft
Ich hier die Lösung gefunden : https://github.com/doctrine/DoctrineBundle/issues/327
InformationsquelleAutor aneth101
Überall, wo ich gehen, ich habe gelesen, dass der Weg der
extension_dir
geändert werden solltenext
zu einem absoluten Pfad. Es funktionierte für mich. Jedoch, wenn Sie versuchen zu bauen ein server, mein Kollege PC, ich hatte zu lassen, die Wert aufext
anstatt einen absoluten Pfad.Wenn Sie setzen einen absoluten Pfad und es macht die Erweiterung ist noch nicht gefunden, wechsler versucht, beide mit dem absoluten Pfad und
ext
.InformationsquelleAutor papillon
Fehlerhafte installation von PHP aufgerufen wurde
War ich mit dem gleichen problem. Und ich hoffe, dass dies helfen würde, jemanden, der ein ähnliches Problem wie ich.
Szenario
Ich erstellt
phpinfo.php
Datei in derpublic
- Ordner und führen Sie diephpinfo()
zu suchen, wo sich meinphp.ini
Datei.PHP.ini Location =
c:\xampp\php\php.ini
Problem
Aufruf
c:\xampp\htdocs> php -v
zurückgegebenPHP 7.2.3
aberphpinfo.php
zeigtePHP 7.2.2
.Lösung
Anstelle von aufrufen
gab mir diese Fehlermeldung, die ich verwendet,
und es funktionierte.
InformationsquelleAutor SollyM
Wenn Sie Lesen alle Antworten oben und es funktioniert immer noch nicht...
Stellen Sie sicher, dass Ihre PHP-PDO-connection-string ist in Ordnung. Nicht wie meins:
$dbh = new PDO('"mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS)
Gibt es keine Informationen in der Fehlermeldung was von Treiber nicht gefunden wurde.
Nach der Neuinstallation alle möglichen PDO und MySQL-Bibliotheken fand ich heraus, dass es " zu Beginn der Verbindungszeichenfolge.
InformationsquelleAutor JerzySBG
Dieser arbeitete für mich.
für mich aufzumuntern und für Sie das Mindeste, was ich tun kann
InformationsquelleAutor Persianuser
Hatte ich die gleiche Ausnahme, wenn Sie versuchen zu verwenden
pdo_sqlite
. Das problem war, dass die automatisch erstellte20-pdo_sqlite.ini
und20-sqlite3.ini
symlinks (in/etc/php5/mods-enabled
) gebrochen wurden.Removeing die kaputte symlinks, und fügen Sie diese manuell mit:
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
das problem behoben.
InformationsquelleAutor ioleo
Wenn Sie mit sqlite für die Prüfung müssen Sie php sqlite pdo-Laufwerk.
Sie können installieren Sie diese wie unten.
Für Ubuntu 14.04
In ubuntu 16.04 gibt es keine
php5-sqlite
InformationsquelleAutor Web Developer in Pune
Linux Mint
Ich hatte das gleiche Problem, während die Verwendung PhpBrew ( 5.5.9 /7.0.14 ) und versuchen, um eine PDO-Verbindung.
Nachdem ich versucht hatte, die meisten Lösungen auf diese post habe ich die folgenden:
Ausgeschaltet PhpBrew
Ausgeführt
sudo apt-get install php7.0
(Linux Mint 17.2 /PHP7.0.16) - frisch installiert, php-versionInformationsquelleAutor Andrei .K