2016-10-12 7 views
1

Ich habe viele Themen zu diesem Fehler gesehen, aber ich denke, mein Fall ist spezifisch. Hier ist die Sache:Laravel: Fehler [PDOException]: Treiber konnte nicht gefunden werden (PostgreSQL)

Ich hatte zunächst PHP 5.5.9 auf meinem Ubuntu-Server installiert. Um das neueste Laravel Framework zu installieren, musste ich PHP auf 5.6 aktualisieren. Ich habe this guide verwendet, um zu aktualisieren. Ich habe auch PostgreSQL 9.3. Nun, phpinfo sagt mir, dass ich immer noch PHP 5.5.9 installiert habe. Aber php -v sagt mir, dass ich PHP 5.6 habe. Ich habe Laravel erfolgreich installiert und kann mich mit meiner Datenbank auf meiner Webseite verbinden (ich kann Felder aus meiner Tabelle anzeigen). Aber wenn ich versuche php artisan migrate in der Konsole auszuführen bekomme ich folgende Fehlermeldung:

[PDOException] 
could not find driver 

Das ist seltsam, weil ich PDO pgsql-Treiber auf PHP 5.5.9 vor und unkommentiert extension=pdo_mysql.so in php.ini und die Anbindung an DB Werk installiert haben gut auf meiner Webseite.

Ich denke, das Problem ist, dass ich zwei verschiedene PHP-Versionen auf meinem Server habe: Ich habe Ordner php5 und php/5.6 in meinem Ordner /etc, die verschiedene Konfigurationen haben. Ich habe versucht, php5-pgsql Paket zu löschen und zu installieren, aber es scheint, auf der vorherigen PHP-Version zu installieren. Ich habe auch zwei verschiedene Ordner in meinem Ordner /usr/lib. Der Befehl php -i | grep -i pdo zeigt keinen installierten PDO-Pgsql-Treiber in der Konsole an.

Gibt es eine Möglichkeit, dieses Problem zu lösen? Ich denke, das passiert, weil Versionen in Konflikt geraten.

Antwort

0

Es gibt nicht nur Paket php/php5, sondern auch Paket libapache2-mod-php. Sofern Sie PHP nicht mit mod_cgi verwenden, müssen Sie auch das Paket libapache2-mod-php aktualisieren, um die entsprechende PHP-Version auf Ihrem Webserver zu haben.

Wie Sie bereits bemerkt haben, gibt es mehrere PHP-Config-Verzeichnisse und -Dateien. Wenn Sie Postgres und PDO auch in Version 5.6 verwenden möchten, müssen Sie es in beiden Konfigurationsdateien aktivieren.


Auf meinem System (Ubuntu 16.04) gibt es Unterverzeichnisse /etc/php/7.0/cli/conf.d und /etc/php/7.0/apache2/conf.d, die beide enthalten 20-pdo_mysql.ini

; configuration for php mysql module
; priority=20
extension=pdo_mysql.so

So können Sie und separat Postgres und PDO für Webserver konfigurieren und/oder cli, und für jede Version.

+0

Danke! Ich habe mit Konfigurationsdateien gezaubert und jetzt sieht mein Apache die korrekte PHP-Version (wie CLI). Ich konnte die Erweiterung installieren und kann die Migration durchführen. – thebat93

Verwandte Themen