我在Ubuntu 14.04(带有Plesk 12.5.30的VPS)上有一个Laravel 5.4项目。创建数据库并使用所需信息设置 .env 文件后,我运行了php artisan migrate并且引发了异常:
php artisan migrate
[Illuminate \ Database \ QueryException] 找不到驱动程序(SQL:从information_schema.tables中选择*,其中table_schema = pmaramaldb,table_name =迁移) [PDOException] 找不到驱动程序
[Illuminate \ Database \ QueryException] 找不到驱动程序(SQL:从information_schema.tables中选择*,其中table_schema = pmaramaldb,table_name =迁移)
[PDOException] 找不到驱动程序
我的 .env 文件包含:
DB_CONNECTION = mysql DB_HOST = 127.0.0.1 DB_PORT = 3306 DB_DATABASE = pmaramaldb DB_USERNAME =用户 DB_PASSWORD =密码
DB_CONNECTION = mysql
DB_HOST = 127.0.0.1
DB_PORT = 3306
DB_DATABASE = pmaramaldb
DB_USERNAME =用户
DB_PASSWORD =密码
我遵循了大多数指南来解决此错误,但是没有任何积极的结果:
启用扩展解决方案:
已启用PDO
在 php.ini中 被自动生成的文件,我想这是做的Plesk。在文件的开头,它说:
; 注意! ; ; 请勿修改此文件,因为它是自动生成的 ;因此,下次生成文件时,所有更改都将丢失。
所以无论如何我都尝试过。之后,我重新启动了Apache,然后再试一次。
安装php7.0-mysql解决方案:
我还尝试安装MySQL,以防万一不是:
user @ server:/ var / www / vhosts $ sudo apt-get install php7.0-mysql Leyendo lista de paquetes … Creandoárboldedependencias …更多信息 php7.0-mysql已经是最新版本。 0个实际结果,0个实际安装情况,0个等级和67个没有实际结果。
user @ server:/ var / www / vhosts $ sudo apt-get install php7.0-mysql
Leyendo lista de paquetes …
Creandoárboldedependencias
…更多信息
php7.0-mysql已经是最新版本。
0个实际结果,0个实际安装情况,0个等级和67个没有实际结果。
SQL Lite安装解决方案:
我还尝试过问题链接说:sudo apt-get install php5-sqlite结果是:
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árboldedependencias …更多信息 php5-sqlite已经是最新版本。 0个实际结果,0个实际安装情况,0个等级和67个没有实际结果。
user @ server:/var/www/vhosts/system/maramal.io/etc$ sudo apt-get install php5-sqlite
php5-sqlite已经是最新版本。
Composer转储-自动加载解决方案:
它也不起作用。我已经尝试过了composer dump-autoload,但是没有用。
composer dump-autoload
运行命令后php -i:
php -i
PDO PDO支持=>启用 PDO驱动程序=> … PHP版本=> 5.6.30-1 + deb.sury.org〜trusty + 1
PDO
PDO支持=>启用
PDO驱动程序=>
…
PHP版本=> 5.6.30-1 + deb.sury.org〜trusty + 1
好吧,我不确定这是否与错误有关,但是运行显示的版本php -v是:
php -v
用户@服务器:〜/ path $ php -v PHP 5.6.30-1 + deb.sury.org〜trusty + 1(CLI) 版权所有(c)1997-2016 The PHP Group Zend Engine v2.6.0,版权所有(c)1998-2016, 具有Zend OPcache v7.0.6-dev的Zend Technologies,由Zend Technologies版权所有(c)1999-2016
用户@服务器:〜/ path $ php -v
PHP 5.6.30-1 + deb.sury.org〜trusty + 1(CLI)
版权所有(c)1997-2016 The PHP Group
Zend Engine v2.6.0,版权所有(c)1998-2016, 具有Zend OPcache v7.0.6-dev的Zend Technologies,由Zend Technologies版权所有(c)1999-2016
Apache使用的PHP与链接到命令行的PHP之间存在冲突。(这种情况经常发生,应该说实话)。
通常要做的是:
which php
这告诉您在命令行中运行时将使用哪个php。例如/usr/bin/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服务器匹配。
更新:
如果如本答案所述,如果您将Ubuntu与PHP的多个备用安装一起使用,则可以执行以下操作:
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>