394 Stimmen

PDOException "konnte keinen Treiber finden"

Ich habe gerade Debian Lenny mit Apache, MySQL und PHP installiert und erhalte eine PDOException could not find driver .

Dies ist die spezifische Codezeile, auf die er sich bezieht:

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

DB_HOST , DB_NAME , DB_USER y DB_PASS sind Konstanten, die ich definiert habe. Auf dem Produktionsserver (und auf meinem früheren Ubuntu-Server) funktioniert es gut.

Hat das etwas mit meiner PHP-Installation zu tun?

Die Suche im Internet hat nicht geholfen, ich finde nur den Austausch von Experten und Beispiele, aber keine Lösungen.

1voto

douggynix Punkte 141

Ich habe dieses Problem auf meinem Debian 6 behoben. Normalerweise hatte ich gerade installiert php5-common Paket. Nach der Installation müssen Sie Ihren Webserver neu starten (Apache oder Nginx, je nachdem, welchen Sie installiert haben). Dann mache ich einfach ein lsof über die Apache-Prozess-ID ( lsof -p process_id ) wie folgt:

sudo lsof -p 1399   #replace 1399 by your apache process id
apache2 1399 root  mem    REG  254,2    80352 227236 /usr/lib/php5/20090626/xmlrpc.so
apache2 1399 root  mem    REG  254,2   166496 227235 /usr/lib/php5/20090626/suhosin.so
apache2 1399 root  mem    REG  254,2    31120 227233 /usr/lib/php5/20090626/pdo_mysql.so
apache2 1399 root  mem    REG  254,2   100776 227216 /usr/lib/php5/20090626/pdo.so
apache2 1399 root  mem    REG  254,2   135864 227232 /usr/lib/php5/20090626/mysqli.so

Wie Sie oben sehen können, werden die Module in einem Dateipfad installiert, der nicht bekannt ist und sich nicht am allgemeinen Bibliothekspfad orientiert: / usr/lib/php5/20090626/ . Für Ihre Installation, kann es anders sein, aber nur der Pfad der pdo_mysql.so, pdo.so, mysqli.so. Das ist der Grund, warum Drupal oder eine andere php-Engine die Bibliothek nicht finden kann und diesen Fehler anzeigt: PDOException: could not find driver

Ich weiß nur nicht, warum es in einem so seltsamen Pfad installiert wird, für mich ist es einfach ein Fehler im Installationsskript für Bibliothekspakete in Debian 6. Ich habe das Problem gelöst, indem ich ein symbolisches Verzeichnis 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/

1voto

papillon Punkte 1263

Überall, wo ich hinkomme, lese ich, dass der Weg der extension_dir sollte geändert werden von ext auf einen absoluten Pfad. Bei mir hat es funktioniert. Als ich jedoch versuchte, einen Server auf dem PC meines Kollegen zu erstellen, musste ich den Wert auf ext anstatt einen absoluten Pfad anzugeben.

Wenn Sie einen absoluten Pfad angegeben haben und die Erweiterung trotzdem nicht gefunden wird, sollten Sie es sowohl mit dem absoluten Pfad als auch mit ext .

1voto

Adam Punkte 20147

Ich hatte das gleiche Problem, weil ich vergessen hatte, in meine virtuelle Maschine zu gehen. Wenn ich in mein lokales Verzeichnis gehen wie diese:

cd /www/homestead/my_project
php artisan migrate

wird dieser Fehler angezeigt. Aber es funktioniert auf meiner virtuellen Maschine

cd ~/homestead
vagrant ssh   
cd /www/homestead/my_project
php artisan migrate

1voto

Überprüfen Sie den korrekten Pfad in extension_dir in Ihrer phpinfo().

0voto

Hmerman6006 Punkte 914

Ich hatte den gleichen Fehler bei Shared Hosting mit cPanel. Standardmäßig pdo_mysql Erweiterung installiert ist, wenn mysqlnd installiert ist.

Dies war jedoch nicht der Fall, ich musste die nd_pdo_mysql Erweiterung zur Verwendung von PDO. Ich habe die PHP Selector GUI verwendet, um sie zu ändern, aber nur, weil ich zu faul war, eine SSH-Verbindung einzurichten.

O, vergaß hinzuzufügen, dass der Server Apache mit MariaDB ist (ständig vergessen, dass, obwohl MariaDB die gleichen Eltern wie MySql hat, unter der Haube einige Funktionen etwas anders handeln können).

PHP 8.0 Laravel 8.0

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X