web-dev-qa-db-ja.com

Laravel 5.4 PHP 7.0:PDO例外-ドライバーが見つかりません(MySQL)

Ubuntu 14.04(Plesk 12.5.30を使用したVPS)にLaravel 5.4プロジェクトがあります。データベースを作成し、必要な情報を含む。envファイルを設定した後、php artisan migrateを実行し、例外がスローされました。

[Illuminate\Database\QueryException]
ドライバーが見つかりませんでした(SQL:select * from information_schema.tables where table_schema = pmaramaldb and table_name = migrations)

[PDOException]
ドライバーが見つかりませんでした

私の。envファイルには次のものがあります:

DB_CONNECTION = mysql

DB_Host = 127.0.0.1

DB_PORT = 3306

DB_DATABASE = pmaramaldb

DB_USERNAME = user

DB_PASSWORD = password

ほとんどのガイドに従ってこのエラーを解決しましたが、良い結果は得られませんでした。

拡張ソリューションの有効化:

PDOは有効

php.iniファイルは自動的に生成されます。これはPleskによって作成されたと思います。ファイルの冒頭には次のように書かれています。

;注意!
;
;このファイルは自動的に生成されるため、変更しないでください。
; SOすべての変更は、次回にファイルが失われるときにIS生成されます。

とにかく試してみました。その後、Apacheを再起動してから再試行しました...動作しませんでした。

php7.0-mysqlのインストールソリューション:

次の場合を除き、MySQLもインストールしようとしました。

user @ server:/ var/www/vhosts $ Sudo apt-get install php7.0-mysql

Leyendo lista de paquetes ...ヘチョ

Creandoárbolde dependencias

Leyendo lainformaciónde estado ... Hecho

php7.0-mysqlはすでに最新バージョンです。

0件のアクチュアライズド、0件のインスタララン、0件のパラエリミナルおよび67件のアクチュアライズドはありません。

** SQL Liteインストールソリューション:**

また、 question link のように試してみました:Sudo apt-get install php5-sqliteと結果は次のとおりです。

user @ server:/var/www/vhosts/system/maramal.io/etc$ Sudo apt-get install php5-sqlite

Leyendo lista de paquetes ...ヘチョ

Creandoárbolde dependencias

Leyendo lainformaciónde estado ... Hecho

php5-sqliteはすでに最新バージョンです。

0件のアクチュアライザド、0件のインスタララン、0件のエリミナルおよび67件のアクチュアライザドはありません。

Composer Dump-autoload Solution:

うまくいきませんでした。 composer dump-autoloadを試しましたが、うまくいきませんでした。

コマンドphp -iを実行した後:

PDO

PDOサポート=>有効

PDOドライバー=>

...

PHPバージョン=> 5.6.30-1 + deb.sury.org〜trusty + 1

さて、これがエラーと関係があるかどうかはわかりませんが、php -vを実行して表示されるバージョンは次のとおりです。

user @ server:〜/ path $ php -v

PHP 5.6.30-1 + deb.sury.org〜trusty + 1(cli)

Copyright(c)1997-2016 The PHP Group

Zend Engine v2.6.0、著作権(c)1998-2016 Zend Technologies
Zend OPcache v7.0.6-dev、Copyright(c)1999-2016、Zend Technologies

25
Maramal

Apacheで使用されるPHPと、コマンドラインにリンクされているPHPには競合があります。 (正直であるべきであることがより頻繁に起こります)。

通常行われることは次のとおりです。

which php

これにより、コマンドラインで実行したときにどのphpが実行されるかがわかります。例えば/usr/bin/php

mv /usr/bin/php /usr/bin/php.old

次に、正しいPHPバージョンを実行可能パスにリンクまたはコピーします。

ln -s /path/to/php/bin/php /usr/bin/php

または、以下も動作するはずです。

cp /path/to/php/bin/php /usr/bin/php

MODを手動でインストールできるようにする場合にも推奨されます。

ln -s /path/to/php/bin/phpize /usr/bin/phpize
ln -s /path/to/php/bin/php-config /usr/bin/php-config

これにより、CLIがWebサーバーに一致します。

更新:

この回答 に記載されているように、PHPの複数の代替インストールでUbuntuを使用している場合、次のことができます。

Sudo update-alternatives --set php /usr/bin/php<version>
Sudo update-alternatives --set phar /usr/bin/phar<version>
Sudo update-alternatives --set phar.phar /usr/bin/phar.phar<version> 
Sudo update-alternatives --set phpize /usr/bin/phpize<version> 
Sudo update-alternatives --set php-config /usr/bin/php-config<version>
14
apokryfos

代替ソリューションとして、php7-mysqlをインストールしたことを確認してください

以下のコマンドを実行してみてください

Sudo apt install php7.0-mysql
39
İsmail Atkurt

同じ問題、ubuntu 17.10、Laravel 5.5。

$ Sudo apt install php7.1-pdo php7.1-mysql

enter image description here

enter image description here

素敵な簡単な修正、これが役立つことを願って

20
Devin Norgarb

あなたと同じシナリオがありました。私は次の問題を解決しました:

1)端末で、タイプ

php --ini

これにより、現在のphp.ini設定ファイルのパスが出力されます。

2)vimまたは好みのエディターを使用してphp.iniを編集します。

vim /etc/php.ini

/etc/php.iniがphp.iniのパスファイルであることに注意してください。マシンによって異なる場合があります。

; extension = php_pdo_mysql.dllを検索し、セミコロン(;)を削除してコメント解除します

4)php.iniの変更を保存/ s

** 5)Webサーバーを再起動して変更を適用します

Sudo systemctl restart Apache2

** 6)コマンドを実行します。

pHPアーティザンの移行

これがあなたのお役に立てば幸いです。

10
doyevaristo

データベースドライバーが見つかりません。プロブレムを解決するには

最初にドライバーをインストールします

Ubuntuの場合:mysqlデータベースの場合。

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

他のデータベースシステムを検索することもできます。

ドライバーを検索することもできます:

Sudo apt-cache search drivername
3
abhishek subedi

これらの次のコマンドを試すことができます

php artisan cache:clear
php artisan config:clear  

次に、Apacheサーバーを再起動します。その後、.envファイルを再構成します

3
Farhad Hossen

私は一度このエラーを経験しました...理由はわかりませんが、PHP 7.3ではドライバーに関連する問題があるか、そこに私がしたことはPHP 7.2に切り替えてすべてがうまくいったようです...

2
Lotes Molapo

linuxではそのようにします

まず、次のようにphpバージョンを確認します。

php -v

たとえば、バージョン番号を取得した後、7.1を取得し、そのようにインストールします

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

Apache2を再起動する必要があります

Sudo service Apache2 restart
2
Jignesh Joisar

職人のキャッシュをクリア

php artisan cache:clear

そして

php artisan migrate:refresh

それでおしまい

1
Fatih TÜZEN

実際、PHP-バージョンを認識しておらず、間違ったパスを使用していると確信しています。

ベンダーのPHPバージョン(sury.orgによる5.6)では、PHP-コマンドを「/ usr/bin/php」として使用しますが、異なるPHP-バージョン、たとえばPleskのバージョンの場合、異なるパスがあります。

/opt/plesk/php/5.2/bin/php -v
/opt/plesk/php/5.3/bin/php -v
/opt/plesk/php/5.4/bin/php -v
/opt/plesk/php/5.5/bin/php -v
/opt/plesk/php/5.6/bin/php -v
/opt/plesk/php/7.0/bin/php -v
/opt/plesk/php/7.1/bin/php -v

PHP-可能な追加のPHPバージョンのコマンド(7.0および7.1の場合、sury.org MAIN ppa PHPバージョンを https:/ /launchpad.net/~ondrej/+archive/ubuntu/php ):

/usr/bin/php7.0 -v
/usr/bin/php7.1 -v

「-m」オプション文字列を使用して各PHPバージョンのインストール済みモジュールを表示し、情報に「-i」オプション文字列を使用します(例)。

/opt/plesk/php/7.0/bin/php -m
/opt/plesk/php/7.0/bin/php -i
or
/usr/bin/php7.0 -m
/usr/bin/php7.0 -i

「composer」を使用するには、PHP実行可能ファイルの絶対パスも使用します(例):

/opt/plesk/php/7.0/bin/php composer-setup.php
or
/usr/bin/php7.0 composer-setup.php

追加の「作曲家」-コマンドは次のとおりです。

/opt/plesk/php/7.0/bin/php composer.phar AND-ADDITIONAL-STRINGS/OPTIONS-TO-BE-INCLUDED
or
/opt/plesk/php/7.0/bin/php composer.phar AND-ADDITIONAL-STRINGS/OPTIONS-TO-BE-INCLUDED
0
UFHH01