web-dev-qa-db-fra.com

php artisan migrate jetant [Exception PDO] Impossible de trouver le pilote - Utilisation de Laravel

J'ai une mauvaise expérience lors de l'installation de Laravel. Cependant, j'ai pu le faire et passer au niveau suivant. J'ai utilisé des générateurs et créé mes migrations. Mais quand je tape la dernière commande 

php artisan migrate

Il lance une exception PDOException - impossible de trouver le pilote.

       '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'    => '',
        ),

C'est ma configuration dans config/database.php.

J'ai essayé de chercher sur les forums stackoverflow et laravel et les gens suggèrent que c'est un problème d'AOP et non d'artisan ou php - j'ai suivi ces suggestions comme ajouter 

extension=pgsql.so
extension=pdo_pgsql.so

dans php.ini 

Aucun résultat positif. Il dit toujours [PDOException]could not find driver.

Quelqu'un peut-il aider s'il vous plaît résoudre ce problème.

Environnement que j'utilise: Mac, Laravel 4, MAMP PRO avec php 5.4.4

30
Vamshi Vangapally

Vous pouvez utiliser

Sudo apt-get install php7-mysql

ou

Sudo apt-get install php5-mysql

ou

Sudo apt-get install php-mysql

Cela a fonctionné pour moi.

44
narendro

Cela a fonctionné pour moi:

Sudo apt-get install php5-sqlite

Cette sqlite installée pour php5, puis j’ai exécuté à nouveau la commande php artisan migrate et a parfaitement fonctionné.

19
Alejandro

Vous devez activer spécifiquement le plugin pdo_mysql. En supposant que vous utilisez une installation standard PHP, il vous suffira généralement d'ajouter ceci à votre fichier PHP.ini:

extension=pdo_mysql.so

Vous devez cependant vous assurer que ce fichier existe dans le répertoire de l'extension.

L'ajout de pdo_pgsql.so n'aide pas car c'est pour PostgreSQL.

De plus, vous devez vous assurer de redémarrer le serveur Web après avoir apporté les modifications au fichier ini PHP, car les modifications risquent de ne pas être reflétées autrement.

16
JaTochNietDan

Nous avons rencontré le même problème ici et cela s’avère que parce que PHP en ligne de commande utilise un fichier php.ini différent de la version du navigateur. C’est pourquoi il semble que l’extension est chargée correctement lorsque vous regardez phpinfo() dans un navigateur.

Selon cette réponse , il vous suffit d’exécuter:

php --ini

Sur la ligne de commande, qui vous indiquera le chemin d'accès au php.ini actuellement chargé (probablement en fait un fichier php-cli.ini situé au même endroit que votre fichier php.ini normal).

Une fois que vous avez trouvé cela, modifiez-le avec les extensions pdo que vous voulez (dans ce cas pour MySQL):

extension=pdo_mysql.so

Ou, pour tous les autres utilisateurs de Windows utilisant un serveur WAMP, cela ressemble probablement à ceci:

extension=php_pdo_mysql.dll
7
Leith

Je pense que vous avez manqué le pilote mysql pour php5 . Exécutez la commande ci-dessous:

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

Veuillez vérifier également votre fichier Laravel .env. Assurez-vous que DB_CONNECTION=mysql, sinon cela ne fonctionnera pas avec MySQL. Il a essayé de charger autre chose.

4
Thach Van

J'obtenais aussi la même erreur -> "[PDOException]
impossible de trouver le pilote "

Après cela, j'ai utilisé de nombreuses commandes, mais je n'ai reçu aucune aide.

Enfin, j'ai utilisé la commande suivante, qui a résolu mon problème.

Sudo apt-get install php5-sqlite

2
hmmm

Laravel Testing with sqlite nécessite des pilotes php pdo sqlite

Pour Ubuntu 14.04

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

Dans Ubuntu 16.04, il n'y a pas de php5-sqlite

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

Avait le même problème et juste pensé, le site Web est exécuté sous le php de MAMP, mais lorsque vous appelez la commande, il exécute le mac (si aucun chemin bash modifié). vous aurez un problème lorsque mac n'a pas ces extensions.

lancez php -i pour trouver les extensions chargées et installez celles que vous avez manquées. ou lancez '/Applications/MAMP/bin/php/php5.3.6/bin/php artisan {votre commande}' pour utiliser les MAMP

2
Entrust

Il vous manque un pilote PDO.

Installez d'abord le pilote 

Pour Ubuntu: Pour la base de données mysql.

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

Vous pouvez également rechercher d'autres systèmes de base de données.

Vous pouvez également rechercher le pilote:

Mot de passe de recherche Sudo apt-cache

Then Run the cmd php artisan migrate
2
abhishek subedi

Vous devez installer la dernière version de php mysql dans mon cas, je suis installer php7.1-mysql

Essaye ça

Sudo apt-get install php7.1-mysql

J'utilise la dernière version de laravel

1
JalalKun

J'ai eu cette erreur pour le PostgreSQL et la solution est:

Sudo apt-get install php7.1-pgsql

Vous devez uniquement utiliser votre version PHP installée, la mienne est 7.1 . Cela a résolu le problème pour PostgreSQL.

1
MKJ

Cela a fonctionné avec moi: (pour pgsql: utilisez 'pgsql' au lieu de 'mysql')

Étape 1)

Sudo apt-get install php-mysql

Étape 2)

php artisan config:clear

Étape 3)

php artisan config:cache

Étape 4)
Ensuite, redémarrez votre serveur, générez à nouveau la clé et migrez-la, c'est fait.

1
Praveen Mendegar

Je dis ubuntu 14.04

La commande ci-dessous a résolu ce problème pour moi.

Sudo apt-get install php-mysql

Dans mon cas, après avoir mis à jour ma version php de 5.5.9 à 7.0.8, j'ai reçu cette erreur, y compris deux autres erreurs.

les erreurs: 

  1. laravel/framework v5.2.14 requiert ext-mbstring * -> l'extension PHP demandée mbstring est absente de votre système.

  2. phpunit/phpunit 4.8.22 requiert ext-dom * -> le nom de l'extension PHP demandé est absent de votre système.

  3. [PDOException]
    impossible de trouver le pilote

Solutions:

J'ai installé ces paquets et mes problèmes ont disparu.

Sudo apt-get install php-mbstring 

Sudo apt-get install php-xml

Sudo apt-get install php-mysql

1
sh6210

vérifiez d'abord votre version php comme ceci:

php -v

après avoir obtenu le numéro de version, par exemple, je reçois 7.1 puis installez-le comme ça

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

et besoin de redémarrer Apache2

Sudo service Apache2 restart
1
Jignesh Joisar

vient de remplacer:; extension = pdo_mysql à extension = pdo_mysql dans le fichier php.ini.

0
Heatscar_

J'ai eu ce problème sur Debian. Le problème était que j'utilisais le référentiel dotdeb pour les paquets PHP plus récents. Pour une raison quelconque, il a mis à jour le php cli à 7.0, tandis que le binaire web php est resté php 5.6. J'ai utilisé cette réponse pour lier le binaire en ligne de commande php à la version 5.6, comme suit:

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

Pour les futurs chercheurs ..___ Sous FreeBSD, essayez la suivante 

pkg_info | grep php5-pdo_mysql

si vous voyez la ligne vide en retour, procédez comme suit:

cd /usr/ports/databases/php5-pdo_mysql

et le faire l'installation

make install clean

puis redémarrez simplement votre Apache et vous avez terminé

par exemple. Sudo /usr/local/etc/rc.d/Apache22 restart

0
Aleksey Potapov

Installez-le via cette commande 

Sudo apt-get install php5-Gd

cela a fonctionné pour moi.

0
briankip

J'avais aussi la même erreur -> "[PDOException] Impossible de trouver le pilote"

J'ai réalisé que le php pointait vers/usr/bin/php au lieu du lampp/opt/lampp/bin/php, j'ai donc simplement créé Et alias

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

il fallait également mettre à jour le fichier .env pour s’assurer que les informations d’accès à la base de données étaient mises à jour.

Et devinez quoi, ça a fonctionné!

0
lightup

J'ai trouvé la bonne solution pour cette erreur! Aucune base de données n'est installée ou votre base de données par défaut dans ce fichier config/database.php Est définie sur une autre base de données comme celle-ci

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

changer la valeur par défaut de celle que vous avez installée ou installer cette base de données qui est faite pour être la valeur par défaut! J'avais installé mysql et php artisan migrate fonctionnait après avoir changé cette ligne en ceci:

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

Si vous utilisez un système basé sur Arch, comme dans Manjaro 

juste utiliser 

Sudo pacman -S php-sqlite

Redémarrez votre httpd

systemctl restart httpd
0
nayan verma

Si vous utilisez Laravel 5.x et que l'erreur consiste à essayer de modifier les attributs d'une colonne, il est possible que l'erreur provienne d'un prérequis manquant.

Essaye ça:

 composer require doctrine/dbal

Ensuite, essayez d'exécuter vos migrations.

À partir d'ici: https://laravel.com/docs/master/migrations#modifying-columns

0
Arlyn

Dans mon cas, je ne savais pas que le PHP exécuté par Apache était différent de celui exécuté par CLI. Cela pourrait être le cas si, lors de la configuration dans httpd.conf, vous avez spécifié un module PHP, différent de celui par défaut utilisé par votre CLI.

0
Sven P

pour les utilisateurs de windows 10 et WAMP ayant trouvé ce message, j'ai une solution. Veuillez visiter ce lien . Cela a fonctionné pour moi et il était difficile de trouver une solution, mais j'espère que cela pourra aider d'autres personnes dans le futur.

0
abel406