Ich entwickle gerade eine Website auf einem Server, auf den ich nur Zugriff auf MySQL und FTP habe. Alle Befehle, die ich ausführen, werden über die b374k-PHP-Shell ausgeführt. Ich habe ein Laravel-Problem mit dem SQL-Treiber. Ich habe versucht, zu File-Hosted SQLite (in database/database.sqlite) zu wechseln, aber die ausgelöste Ausnahme ist dieselbe wie bei der Verwendung von MySQL. Die Eingabe und Ausgabe der Konsole ist wie folgt:
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
Die auf dem Server installierten Apache-Erweiterungen sind:
/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
Was kann das Problem sein und wie kann ich es beheben? (Ich habe keinen Zugriff auf Root-Bash)
Wenn du kannst, führe Folgendes aus:
composer update
composer require doctrine/dbal
Es sieht so aus, als hätten Sie eine fehlende Abhängigkeit
Bearbeiten:
Möglicherweise müssen Sie Folgendes in Ihrer php.ini-Datei auskommentieren.
;extension=pdo_mysql.so
Aus diesem Beitrag entnommen: Laravel 5 PDOException Treiber nicht gefunden . Ich glaube, ich musste etwas genau so machen, wenn Sie Laravel auf Digital Ocean einrichten.
Ihr Datenbanktreiber fehlt. Um das Problem zu lösen
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 search drivername
Führen Sie dann die cmd php artisan migrate
aus.
Beim Ausführen meiner Testsuite wurde derselbe Fehler angezeigt. Es hat vorher funktioniert, aber es funktionierte nicht mehr, nachdem ich PHP aktualisiert hatte. So tat ich
Sudo apt-get install php-sqlite3
und es hat funktioniert.
Zuerst php -m
.__ prüfen.
. Wenn der mysql-Treiber nicht angezeigt wird, installieren Sie mysql Sudo apt-cache search php-mysql
Ihre Ergebnisse sind ähnlich wie:
php-mysql - MySQL module for PHP [default]
install php-mysql Treiber
Sudo apt-get install php7.1-mysql
Noch einfacher in Ubuntu (18.04)
apt install php-mysql
Erledigt. Sie müssen keine .ini
-Dateien bearbeiten.
Viel Spaß beim Codieren!
Zum Schluss habe ich das behoben. Es gab einen Tippfehler in der Serverkonfiguration und alle Pfade zu php extecutables waren in Ordnung, außer dem Pfad zu php-cli, der den Fehler verursacht hat. Als ich den Pfad reparierte, funktionierte alles gut.
Im Fenster OS. Ich habe die unkommentierte Erweiterung = pdo_mysql für die php.ini-Datei, die sich im selben Verzeichnis der php.exe befindet. danach funktioniert es gut.
Ich hatte das gleiche Problem, und ich kommentiere extension=pdo_sqlite
und lief die migration
und alles hat gut funktioniert.
Vermutlich fehlt Ihnen sqlite oder der spezifische DB-Treiber, den Sie migrieren möchten.
Installieren Sie den DB-Treiber und alles wird gut. Sie müssen Ihre php.ini-Datei nicht unbedingt bearbeiten (es ist jedoch eine Möglichkeit, sie zu beheben).
Für SQLite tun -> Sudo apt-get install php-sqlite3
Dann php artisan migrate
NB: Ich nehme an, Sie haben PHP und MySql bereits installiert
In CentOS7 try versuche ich folgendes: yum install php-mysql
, dann editiere ich die php.ini