web-dev-qa-db-fra.com

Laravel: PDOException: impossible de trouver le pilote

Je développe un site Web sur un serveur. Je n'ai accès qu'à MySQL et FTP. Par conséquent, toutes les commandes que j'exécute se font via le shell ph37 de b374k. Je rencontre un problème de Laravel avec le pilote SQL. J'ai essayé de passer à SQLite hébergé dans un fichier (dans database/database.sqlite), mais l'exception levée est la même que lorsque vous utilisez MySQL. Les entrées et sorties de la console sont les suivantes:

   php artisan migrate:refresh --seed
    [Illuminate\Database\QueryException]
could not find driver (SQL: select * from sqlite_master where type = 'table ' and name = migrations)
 [Doctrine\DBAL\Driver\PDOException]
could not find driver
 [PDOException]
could not find driver

Les extensions Apache installées sur le serveur sont les suivantes:

    /etc/php/5.6/Apache2/conf.d/10-mysqlnd.ini, 
/etc/php/5.6/Apache2/conf.d/10-opcache.ini,
 /etc/php/5.6/Apache2/conf.d/10-pdo.ini,
 /etc/php/5.6/Apache2/conf.d/15-xml.ini, 
/etc/php/5.6/Apache2/conf.d/20-calendar.ini,
 /etc/php/5.6/Apache2/conf.d/20-ctype.ini, 
/etc/php/5.6/Apache2/conf.d/20-curl.ini,
 /etc/php/5.6/Apache2/conf.d/20-dom.ini, 
/etc/php/5.6/Apache2/conf.d/20-exif.ini, 
/etc/php/5.6/Apache2/conf.d/20-fileinfo.ini, 
/etc/php/5.6/Apache2/conf.d/20-ftp.ini, /etc/php/5.6/Apache2/conf.d/20-Gd.ini, 
/etc/php/5.6/Apache2/conf.d/20-gettext.ini, 
/etc/php/5.6/Apache2/conf.d/20-iconv.ini, 
/etc/php/5.6/Apache2/conf.d/20-json.ini, 
/etc/php/5.6/Apache2/conf.d/20-mbstring.ini, 
/etc/php/5.6/Apache2/conf.d/20-mcrypt.ini, 
/etc/php/5.6/Apache2/conf.d/20-mysql.ini, 
/etc/php/5.6/Apache2/conf.d/20-mysqli.ini, 
/etc/php/5.6/Apache2/conf.d/20-pdo_mysql.ini,
 /etc/php/5.6/Apache2/conf.d/20-phar.ini, 
/etc/php/5.6/Apache2/conf.d/20-posix.ini, 
/etc/php/5.6/Apache2/conf.d/20-readline.ini, 
/etc/php/5.6/Apache2/conf.d/20-shmop.ini, 
/etc/php/5.6/Apache2/conf.d/20-simplexml.ini, 
/etc/php/5.6/Apache2/conf.d/20-sockets.ini,
 /etc/php/5.6/Apache2/conf.d/20-sysvmsg.ini,
 /etc/php/5.6/Apache2/conf.d/20-sysvsem.ini,
 /etc/php/5.6/Apache2/conf.d/20-sysvshm.ini,
 /etc/php/5.6/Apache2/conf.d/20-tokenizer.ini, 
/etc/php/5.6/Apache2/conf.d/20-wddx.ini,
 /etc/php/5.6/Apache2/conf.d/20-xmlreader.ini, 
/etc/php/5.6/Apache2/conf.d/20-xmlwriter.ini, 
/etc/php/5.6/Apache2/conf.d/20-xsl.ini, 
/etc/php/5.6/Apache2/conf.d/20-Zip.ini

Quel peut être le problème et comment puis-je le résoudre? (Je n'ai pas accès à root bash)

9
artus90

Si vous le pouvez, lancez:

composer update

composer require doctrine/dbal

Il semble que vous ayez une dépendance manquante

Modifier:

Vous devrez peut-être commenter ce qui suit dans votre fichier php.ini. 

;extension=pdo_mysql.so

Tiré de cet article: Laravel 5 PDOException impossible de trouver le pilote . Je pense que je devais faire exactement ce qui suit pour configurer laravel sur Digital Ocean.

27
Nibb

Votre pilote de base de données est manquant. Pour résoudre le problème

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:

Sudo apt-cache search drivername

Puis exécutez le cmd php artisan migrate

20
abhishek subedi

J'ai eu la même erreur lors de l'exécution de ma suite de tests. Il fonctionnait auparavant mais il a cessé de fonctionner après la mise à niveau de php. Alors j'ai fait

Sudo apt-get install php-sqlite3

et cela a fonctionné.

10
Mubashar Abbas

Commencez par vérifier php -m
. Si vous ne voyez pas le pilote mysql, installez mysql Sudo apt-cache search php-mysql
Vos résultats seront similaires à:

php-mysql - MySQL module for PHP [default]


installer php- mysql Driver

Sudo apt-get install php7.1-mysql
4
Nadim Tareq

Encore plus simple sous Ubuntu (18.04)

apt install php-mysql

Terminé. Pas besoin de modifier les fichiers .ini.

Bonne codage!

2
Stan Smulders

Enfin j'ai corrigé ça. Il y avait une faute de frappe dans la configuration du serveur et tous les chemins d'accès aux fichiers exécutables php étaient corrects, à l'exception du chemin d'accès à php-cli, qui a causé l'erreur. Quand j'ai corrigé le chemin, tout a bien fonctionné.

1
artus90

Dans la fenêtre OS. J'ai uncomment extension = pdo_mysql pour le fichier php.ini qui se trouve dans le même répertoire que php.exe. après ça marche bien.

0
chokelive

Dans CentOS7, je tente ceci: yum install php-mysql, puis je modifie le fichier php.ini

0
Donne