wake-up-neo.net

pHP Handwerker migrieren werfen [PDO Exception] Treiber konnte nicht gefunden werden - Using Laravel

Ich habe schlechte Erfahrungen mit der Installation von Laravel gemacht. Ich konnte dies jedoch tun und zum nächsten Level übergehen. Ich habe Generatoren verwendet und meine Migrationen erstellt. Aber wenn ich den letzten Befehl eingebe 

php artisan migrate

Es wird eine PDOException ausgelöst - Treiber konnte nicht gefunden werden.

       'mysql' => array(
            'driver'    => 'mysql',
            'Host'      => 'localhost',
            'unix_socket'   => '/Applications/MAMP/tmp/mysql/mysql.sock',
            'database'  => 'database',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

Das ist meine Konfiguration in config/database.php.

Ich habe versucht, in stackoverflow- und laravel-Foren zu suchen, und die Leute behaupten, dass es ein PDO-Problem ist und nicht die Artisans oder PHP-Programme 

extension=pgsql.so
extension=pdo_pgsql.so

in php.ini 

Kein positives Ergebnis Es sagt immer [PDOException]could not find driver.

Kann jemand bitte helfen, dieses Problem zu lösen.

Umgebung, die ich verwende: Mac, Laravel 4, MAMP PRO mit PHP 5.4.4

30

Sie können verwenden

Sudo apt-get install php7-mysql

oder

Sudo apt-get install php5-mysql

oder

Sudo apt-get install php-mysql

Das hat bei mir funktioniert.

44
narendro

Das hat für mich funktioniert:

Sudo apt-get install php5-sqlite

Dieses installierte sqlite für PHP5, dann habe ich den PHP-Handwerker-Befehl erneut ausgeführt und funktionierte einwandfrei.

19
Alejandro

Sie müssen das pdo_mysql-Plugin speziell aktivieren. Angenommen, Sie verwenden eine Standardinstallation PHP. In der Regel müssen Sie dies einfach in Ihre PHP.ini-Datei einfügen:

extension=pdo_mysql.so

Sie müssen jedoch sicherstellen, dass diese Datei im Erweiterungsverzeichnis vorhanden ist.

Das Hinzufügen von pdo_pgsql.so hilft nicht, da dies für PostgreSQL ist.

Darüber hinaus sollten Sie sicherstellen, dass Sie den Webserver neu starten, nachdem Sie die Änderungen an der Ini-Datei PHP vorgenommen haben, da die Änderungen möglicherweise nicht anders dargestellt werden.

16
JaTochNietDan

Hier ging es um das gleiche Problem, und es stellte sich heraus, dass PHP in der Befehlszeile eine andere php.ini-Datei als die Browserversion verwendet. Aus diesem Grund scheint es, als würde die Erweiterung korrekt geladen, wenn Sie phpinfo() in a betrachten Browser.

Als diese Antwort müssen Sie nur ausführen:

php --ini

In der Befehlszeile, die Ihnen den Pfad zum aktuell geladenen php.ini (wahrscheinlich eine php-cli.ini-Datei an derselben Stelle wie Ihre reguläre php.ini-Datei) mitteilt.

Sobald Sie das gefunden haben, ändern Sie es mit den gewünschten pdo-Erweiterungen (in diesem Fall für MySQL):

extension=pdo_mysql.so

Für alle anderen Benutzer, die unter Windows einen WAMP-Server verwenden, sieht es stattdessen wahrscheinlich so aus:

extension=php_pdo_mysql.dll
7
Leith

Ich glaube, Sie haben den MySQL-Treiber für PHP5 verpasst.

Sudo apt-get install php5-mysql
/etc/init.d/php5-fpm restart
6
Robin Wang

Bitte überprüfen Sie auch Ihre Laravel .env-Datei. Stellen Sie sicher, DB_CONNECTION=mysql, sonst funktioniert es nicht mit MySQL. Es wurde versucht, etwas anderes zu laden.

4
Thach Van

Ich habe auch die gleiche Fehlermeldung erhalten -> "[PDOException]
Treiber konnte nicht gefunden werden "

Danach benutzte ich viele Befehle, bekam aber keine Hilfe

Schließlich habe ich den folgenden Befehl verwendet, der mein Problem gelöst hat.

Sudo apt-get install php5-sqlite

2
hmmm

Laravel Testing mit sqlite benötigt PHP-pdo-sqlite-Treiber

Für Ubuntu 14.04

Sudo apt-get install php5-sqlite
Sudo service Apache2 restart

In ubuntu 16.04 gibt es keinen php5-sqlite

Sudo apt-get install php7.0-sqlite
Sudo service Apache2 restart
2
Sagar Koshti

Hatte das gleiche Problem und stellte nur fest, dass die Website unter MAMP's php läuft, aber wenn Sie in command aufrufen, wird mac ausgeführt (falls kein bash-Pfad geändert wurde). Sie werden Probleme haben, wenn Mac diese Erweiterungen nicht hat.

führen Sie php -i aus, um die geladenen Erweiterungen herauszufinden, und installieren Sie die fehlenden Dateien. oder führen Sie '/Applications/MAMP/bin/php/php5.3.6/bin/php artisan {your command}' aus, um MAMPs zu verwenden

2
Entrust

Ihnen fehlt ein PDO-Treiber.

Installieren Sie zuerst den Treiber 

Für Ubuntu: Für MySQL-Datenbank.

Sudo apt-get install php5.6-mysql/php7.2-mysql

Sie können auch nach anderen Datenbanksystemen suchen.

Sie können auch nach dem Treiber suchen:

Sudo apt-cache Such-Treibername

Then Run the cmd php artisan migrate
2
abhishek subedi

Sie müssen die neueste Version von php mysql installieren. In meinem Fall installiere ich php7.1-mysql.

Versuche dies

Sudo apt-get install php7.1-mysql

Ich verwende die neueste Version von Laravel

1
JalalKun

Ich habe diesen Fehler für PostgreSQL bekommen und die Lösung ist:

Sudo apt-get install php7.1-pgsql

Sie müssen nur Ihre installierte PHP -Version verwenden, meine ist 7.1 . Dies hat das Problem für PostgreSQL behoben.

1
MKJ

Das funktionierte bei mir: (für pgsql: benutze 'pgsql' anstelle von 'mysql')

Schritt 1)

Sudo apt-get install php-mysql

Schritt 2)

php artisan config:clear

Schritt 3)

php artisan config:cache

Schritt 4)
Starten Sie anschließend Ihren Server neu, generieren Sie den Schlüssel erneut und migrieren Sie ihn, Its Done

1

Ich bin nicht ubuntu 14.04

Der folgende Befehl hat dieses Problem für mich gelöst.

Sudo apt-get install php-mysql

In meinem Fall habe ich nach dem Update meiner PHP-Version von 5.5.9 auf 7.0.8 diesen Fehler erhalten, der zwei weitere Fehler enthält.

fehler: 

  1. laravel/framework v5.2.14 erfordert ext-mbstring * -> Die angeforderte PHP -Erweiterung mbstring fehlt in Ihrem System.

  2. phpunit/phpunit 4.8.22 erfordert ext-dom * -> Die angeforderte PHP -Erweiterungsdomäne fehlt in Ihrem System.

  3. [PDOException]
    konnte keinen Treiber finden

Lösungen:

Ich habe diese Pakete installiert und meine Probleme sind weg.

Sudo apt-get install php-mbstring 

Sudo apt-get install php-xml

Sudo apt-get install php-mysql

1
sh6210

überprüfen Sie zuerst Ihre PHP-Version wie folgt:

php -v

nachdem Sie zum Beispiel die Versionsnummer erhalten haben, erhalte ich 7.1 und installiere dann so

Sudo apt-get install  php7.1-sqlite     //for laravel testing with sqlite
Sudo apt-get install  php-mysql         //for default mysql
Sudo apt-get install  php7.1-mysql      //for version based mysql 
Sudo apt-get install  php7.1-common     //for other necessary package for php

und müssen Apache2 neu starten

Sudo service Apache2 restart
1
Jignesh Joisar

einfach ersetzt:; extension = pdo_mysql bis extension = pdo_mysql in php.ini.

0
Heatscar_

Ich hatte dieses Problem bei Debian. Das Problem bestand darin, dass ich das Dotdeb-Repository für neuere PHP -Pakete verwendete. Aus irgendeinem Grund wurde das PHP-Cli auf 7.0 aktualisiert, während die Web-PHP-Binärdatei PHP 5.6 beibehalten hat. Ich habe diese Antwort verwendet, um die PHP-Befehlszeilen-Binärdatei mit der 5.6-Version zu verknüpfen:

$ Sudo ln -sfn /usr/bin/php5 /etc/alternatives/php
0
user151841

Für zukünftige Sucher . Bei FreeBSD versuchen Sie das nächste 

pkg_info | grep php5-pdo_mysql

wenn Sie die leere Zeile sehen, gehen Sie wie folgt vor:

cd /usr/ports/databases/php5-pdo_mysql

und das do the install

make install clean

dann starten Sie einfach Ihren Apache neu und Sie sind fertig

z.B. Sudo /usr/local/etc/rc.d/Apache22 restart

0
Aleksey Potapov

Installieren Sie es über diesen Befehl 

Sudo apt-get install php5-Gd

das hat für mich funktioniert.

0
briankip

Ich habe auch die gleiche Fehlermeldung erhalten -> "[PDOException] Treiber nicht gefunden"

Mir wurde klar, dass der PHP-Code auf/usr/bin/php statt auf lampp/opt/lampp/bin/php verweist, also habe ich einfach Und Alias ​​erstellt

alias ​​php = "/ opt/lampp/bin/php" 

außerdem musste die .env-Datei aktualisiert werden, um sicherzustellen, dass die Anmeldeinformationen für den Datenbankzugriff aktualisiert wurden.

Und weißt du was, es hat funktioniert!

0
lightup

Ich habe die richtige Lösung für diesen Fehler gefunden! Entweder haben Sie keine Datenbank installiert oder Ihre Standarddatenbank in dieser Datei config/database.php Ist auf eine andere Datenbank wie diese gesetzt

'default' => 'sqlite',
'default' => env('DB_CONNECTION', 'sqlite'), //laravel 5.2

Ändern Sie die Standardeinstellung, in der Sie die Datenbank installiert haben, die als Standard festgelegt wurde. Ich hatte MySQL installiert und PHP Handwerker migriert, nachdem ich diese Zeile geändert hatte:

'default' => 'mysql',
'default' => env('DB_CONNECTION', 'mysql'), //laravel5.2
0
lewis4u

Wenn Sie ein Arch-basiertes System wie in Manjaro verwenden 

benutz einfach 

Sudo pacman -S php-sqlite

Starten Sie Ihr httpd neu

systemctl restart httpd
0
nayan verma

Wenn Sie Laravel 5.x verwenden und der Fehler beim Versuch besteht, die Attribute einer Spalte zu ändern, ist der Fehler möglicherweise auf eine fehlende Voraussetzung zurückzuführen.

Versuche dies:

 composer require doctrine/dbal

Versuchen Sie dann, Ihre Migrationen auszuführen.

Von hier: https://laravel.com/docs/master/migrations#modifying-columns

0
Arlyn

In meinem Fall war mir nicht bewusst, dass der von Apache ausgeführte PHP sich von dem von CLI ausgeführten unterscheidet. Dies kann der Fall sein, wenn Sie während der Konfiguration in httpd.conf ein Modul PHP angegeben haben, das nicht der Standard ist, den Ihre CLI verwendet.

0
Sven P

für die Benutzer von windows 10 und WAMP, die diesen Beitrag gefunden haben, habe ich eine Lösung. Bitte besuchen Sie diesen Link . Es hat für mich funktioniert und es war schwierig, zur Lösung zu kommen, aber ich hoffe, dass es in der Zukunft anderen helfen kann.

0
abel406