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.

3voto

Growling Flea Punkte 99

Ich habe den letzten Tag damit verbracht, herauszufinden, warum ich die folgende Fehlermeldung erhalte. Ich benutze Ubuntu 14.04.

Das Problem:
Ich habe festgestellt, dass meine PHP-CLI-Version mit php7.0 läuft, aber php_info() (die Web-Version) zeigt php 5.5.9 an. Obwohl php_info() anzeigte, dass pdo aktiviert war, erkannte die Kommandozeile (CLI) den Befehl pdo_mysql nicht. Es stellte sich heraus, dass mysql für meine alte Version aktiviert war, nicht aber für die CLI-Version. Ich habe lediglich mysql für php7.0 installiert und es funktionierte.

Das hat funktioniert:

Um die Version zu überprüfen:

php -v

So installieren Sie mysql für php7.0

sudo apt-get install php7.0-mysql

1) Vergewissern Sie sich, dass Ihre CLI-Version mit Ihrer Web-Version übereinstimmt.
2) Wenn sie unterschiedlich sind, vergewissern Sie sich, dass Ihre CLI-Version das mysql-Plug-in hat, da es nicht standardmäßig mitgeliefert wird.

3voto

gposton Punkte 59

In meinem Fall war die DSN-Zeichenkette falsch, sie enthielt nämlich nicht mysql://. Ich hätte eine andere Fehlermeldung erwartet, vielleicht so etwas wie 'DSN string does not specify driver/protocol'.

Hinzufügen von mysql:// an den Anfang der DSN-Zeichenkette hat das Problem behoben.

2voto

MSS Punkte 3168

Ich empfehle sehr mysqllnd anstelle von mysql weil Sie eine Menge Probleme wie Zahl Konvertierung und Bit-Typ evaluiert Problem mit haben würde mysql Erweiterung.

auf ubuntu installieren mysqllnd mit folgendem Befehl:

sudo apt-get install php5-mysqlnd

2voto

SamTzu Punkte 157
PHP Fatal error:  Uncaught PDOException: could not find driver

Ich kämpfte und kämpfte mit "apt install php-mysql php7toInfinity and don't forget sqlite-what-ever's" und konnte diese Fehlermeldung einfach nicht loswerden, bis ich zu den Grundlagen zurückging und die Dateiberechtigungen auf der fraglichen Website zurücksetzte.

Mit diesen 3 Befehlen wurden die Datei- und Ordnerberechtigungen auf der Website zurückgesetzt, so dass sie wieder funktioniert.

cd /var/www/web-site-name.com/web/

# find (sub) directories and change permissions
find . -type d -exec chmod 755 {} \;

# find files and change permissions
find . -type f -exec chmod 664 '{}' \;

2voto

Balmipour Punkte 2737

In meinem Fall habe ich PDO mit php-cli verwendet, und es hat gut funktioniert.

Nur wenn ich versuchte, eine Verbindung von Apache aus herzustellen, bekam ich das Problem des fehlenden Treibers, was ich nicht ganz verstanden habe.

Eine einfache apt-get install php-mysql gelöst. (Ubuntu 16.04 / PHP7. Credits gehen an die ausgewählte Antwort & Ivans Kommentar)

Ich hoffe, es kann helfen.

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