我在安装laravel时遇到了不好的经历。但是,我能够这样做,并进入下一个级别。我使用了生成器并创建了我的迁移。 但是当我输入最后一个命令时
php artisan migrate
它抛出一个PDOException - 找不到驱动程序。
'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' => '',
),
这是我在config / database.php中的配置。
我尝试在stackoverflow和laravel论坛上搜索,人们认为这是PDO问题,而不是工匠或php的 - 我遵循了这些建议,如添加
extension=pgsql.so
extension=pdo_pgsql.so
在php.ini中
没有积极的结果。它总是说[PDOException]could not find driver.
有人可以帮忙解决这个问题。
我正在使用的环境:Mac,laravel 4,MAMP PRO和php 5.4.4
答案 0 :(得分:49)
您可以使用
sudo apt-get install php7-mysql
或
sudo apt-get install php5-mysql
或
sudo apt-get install php-mysql
这对我有用。
答案 1 :(得分:19)
这对我有用:
sudo apt-get install php5-sqlite
这是为php5安装的sqlite,然后我再次运行了php artisan migrate命令并且工作得很好。
答案 2 :(得分:17)
您需要专门启用pdo_mysql插件。假设您正在使用标准的PHP安装,那么通常您只需将其添加到PHP.ini文件中:
extension=pdo_mysql.so
您需要确保此文件存在于扩展目录中。
添加pdo_pgsql.so
没有帮助,因为这适用于PostgreSQL。
此外,在对PHP ini文件进行更改后,应确保重新启动Web服务器,否则更改可能不会反映出来。
答案 3 :(得分:7)
在这里遇到同样的问题,事实证明这是因为命令行中的PHP使用了浏览器版本中不同的php.ini
文件,这就是为什么当你看到它时正好加载扩展名的原因{/ 1}}在浏览器中。
根据this answer,您只需要运行:
phpinfo()
在命令行中,它将告诉您当前加载的php --ini
(可能实际上是php.ini
文件的路径,该文件与常规php-cli.ini
文件位于同一位置。 / p>
一旦找到了,请使用您想要的pdo扩展(在本例中为MySQL)修改它:
php.ini
或者,对于Windows上使用某种WAMP服务器的任何其他用户,它可能看起来像这样:
extension=pdo_mysql.so
答案 4 :(得分:6)
我认为你错过了php5的mysql驱动程序。 执行以下命令:
sudo apt-get install php5-mysql
/etc/init.d/php5-fpm restart
答案 5 :(得分:4)
请检查您的Laravel .env
文件。确保DB_CONNECTION=mysql
,否则它将不适用于MySQL。它试图加载其他东西。
答案 6 :(得分:2)
有同样的问题而且只是想通了,网站在MAMP的php下运行,但是当你打电话给命令时,它会运行mac(如果没有修改bash路径)。当mac没有这些扩展时,你会遇到问题。
运行php -i查找已加载的扩展,然后安装那些错过的扩展。或运行' /Applications/MAMP/bin/php/php5.3.6/bin/php artisan {your command}'使用MAMP'
答案 7 :(得分:2)
我也得到了同样的错误 - > " [PDOException]
找不到司机"
之后我使用了很多命令,但没有得到任何帮助
最后我使用了以下命令,解决了我的问题。
sudo apt-get install php5-sqlite
答案 8 :(得分:2)
您缺少PDO驱动程序。
首先安装驱动程序
对于ubuntu:对于mysql数据库。
sudo apt-get install php5.6-mysql / php7.2-mysql
您还可以搜索其他数据库系统。
您也可以搜索驱动程序:
sudo apt-cache search drivername
Then Run the cmd php artisan migrate
答案 9 :(得分:2)
对于Ubuntu 14.04
sudo apt-get install php5-sqlite
sudo service apache2 restart
在ubuntu 16.04中没有php5-sqlite
sudo apt-get install php7.0-sqlite
sudo service apache2 restart
答案 10 :(得分:1)
我在debian上遇到了这个问题。问题是,我使用dotdeb存储库来获取更新的PHP包。出于某种原因,它将php cli更新为7.0,而web php二进制文件仍然是php 5.6。我使用this answer将php命令行二进制文件链接到5.6版本,如下所示:
$ sudo ln -sfn /usr/bin/php5 /etc/alternatives/php
答案 11 :(得分:1)
我在PostgreSQL中遇到此错误,解决方法是:
sudo apt-get install php7.1-pgsql
您只需要使用已安装的PHP版本,我的是7.1。 这已经解决了PostgreSQL的问题。
答案 12 :(得分:1)
这对我有用:(对于pgsql:使用'pgsql'而不是'mysql')
步骤1)
sudo apt-get install php-mysql
步骤2)
php artisan config:clear
步骤3)
php artisan config:cache
步骤4)
然后重新启动服务器,再次生成密钥并迁移它,完成
答案 13 :(得分:1)
您必须安装最新版本的php mysql
在我的情况下,我安装php7.1-mysql
试试这个
sudo apt-get install php7.1-mysql
我正在使用最新版本的laravel
答案 14 :(得分:1)
我没有用ubuntu 14.04
下面的命令为我解决了这个问题。
sudo apt-get install php-mysql
在我的情况下,将我的php版本从5.5.9更新为7.0.8后,我收到此错误,包括其他两个错误。
错误:
laravel / framework v5.2.14需要ext-mbstring * - >系统中缺少所请求的PHP扩展名mbstring。
phpunit / phpunit 4.8.22需要ext-dom * - >系统中缺少所请求的PHP扩展名dom。
[PDOException]
找不到司机
解决方案:
我安装了这个软件包,我的问题就消失了。
sudo apt-get install php-mbstring
sudo apt-get install php-xml
sudo apt-get install php-mysql
答案 15 :(得分:0)
如果您使用的是Laravel 5.x,并且错误来自于尝试修改列的属性,则错误可能来自缺少的先决条件。
试试这个:
composer require doctrine/dbal
然后尝试运行迁移。
从这里: https://laravel.com/docs/master/migrations#modifying-columns
答案 16 :(得分:0)
我也得到了同样的错误 - > “[PDOException] 找不到司机“
我意识到php指向/ usr / bin / php而不是lampp / opt / lampp / bin / php所以我只是创建了 和别名
alias php =“/ opt / lampp / bin / php”
还必须更新.env文件以确保更新数据库访问凭据。
猜猜看,它有效!
答案 17 :(得分:0)
我找到了解决此错误的正确方法!您没有安装任何数据库或此文件中的默认数据库 的配置/ database.php中强> 设置为像这样的其他数据库
'default' => 'sqlite',
'default' => env('DB_CONNECTION', 'sqlite'), //laravel 5.2
将默认值更改为您安装的默认值或安装默认的数据库!我已经安装了mysql和php artisan migrate工作后我改变了这一行:
'default' => 'mysql',
'default' => env('DB_CONNECTION', 'mysql'), //laravel5.2
答案 18 :(得分:0)
在我的情况下,我不知道Apache运行的PHP与CLI运行的PHP不同。如果在httpd.conf中进行配置期间您指定了一个PHP模块,而不是CLI使用的默认模块,则可能就是这种情况。
答案 19 :(得分:0)
通过此命令安装
sudo apt-get install php5-gd
这对我有用。
答案 20 :(得分:0)
对于未来的搜索者。 在FreeBSD上试试下一个
pkg_info | grep php5-pdo_mysql
如果您看到空行返回,请执行以下操作:
cd /usr/ports/databases/php5-pdo_mysql
并执行安装
make install clean
然后只需重启你的apache即可完成
e.g。 sudo /usr/local/etc/rc.d/apache22 restart
答案 21 :(得分:0)
仅替换为:; php.ini文件中的extension = pdo_mysql到extension = pdo_mysql。
答案 22 :(得分:0)
如果您正在使用基于manjaro的基于拱的系统
只需使用
sudo pacman -S php-sqlite
重新启动您的httpd
systemctl restart httpd
答案 23 :(得分:0)
对于发现该帖子的 windows 10和WAMP 的那些用户,我有解决方案。Please go visit this link。它对我有用,很难找到解决方案,但我希望将来对其他人有帮助。
答案 24 :(得分:0)
首先像这样检查您的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
答案 25 :(得分:0)
假设您使用虚拟盒,无业游民等进行了常规安装。 这可能发生在新人们身上。 PHP可以安装在PC上,但是laravel项目的所有PHP模块都在VM上 因此,要访问您的VM,请转到homestead文件夹并键入: 流浪的ssh
然后转到项目路径并执行php artisan迁移。
答案 26 :(得分:0)
这是 MAC 和 MAMP 的问题。 尝试在您的 .env 文件中添加:
DB_SOCKET= /Applications/MAMP/tmp/mysql/mysql.sock
它对我有用