我在安装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问题,而不是artisan或php的问题-我遵循这些建议,例如添加
extension=pgsql.so
extension=pdo_pgsql.so
在php.ini中
没有积极的结果。 总是说[PDOException]could not find driver.
有人可以帮忙解决这个问题吗?
我正在使用的环境:Mac,laravel 4,带有AMP 5.4.4的MAMP PRO
您有pdo_mysql.so扩展名吗?
是的,我有...很抱歉,仅粘贴了2个扩展名,但是我确实具有extension = imap.so extension = yaz.so extension = mcrypt.so extension = gettext.so extension = pgsql.so extension = pdo_pgsql.so extension = pdo_mysql。所以
并且确定模块已启用吗?在LAMP中,可以使用sudo a2enmod启用模块。查看您的phpinfo(),如果驱动程序已启用。
在phpinfo()上-显示启用了sqlite,pgsql,mysql的PDO驱动程序!
在使用CLI时,请尝试运行php -i | less并查看是否实际加载了PDO扩展。如果不是,那么您将需要修改CLI使用的php.ini文件,该文件与Apache使用的文件不同。它通常与PHP exe位于同一目录,但是在Windows上就是这样,不确定在Mac上的位置。但是这个家伙确实stackoverflow.com/questions/2750580/
@RiggsFolly我遇到了您指定的问题。我不需要php.ini中的pdo_mysql,而是需要在php-cli.ini中使用它。谢谢!
大家好,对于发现这篇文章的Windows 10和WAMP用户,我有一个解决方案。[请去访问此链接] [1]。它对我有用,很难找到解决方案,但我希望将来对其他人有帮助。 [1]:stackoverflow.com/questions/54580252/
您可以使用
sudo apt-get install php7-mysql
要么
sudo apt-get install php5-mysql
要么
sudo apt-get install php-mysql
这对我有用。
sudo apt-get install php-mysql这对我有用。谢了哥们
如果不确定,请使用php --version检查PHP版本并安装相应的驱动程序。
这为我工作:
sudo apt-get install php5-sqlite
这为php5安装了sqlite,然后我再次运行了php artisan migration命令,并且运行良好。
修复了尝试在主Laravel框架上运行phpunit时出现的问题。
我不明白为什么,但是安装php5-sqlite导致PDO mysql正常工作。谢谢!
Ubuntu的最新版本不包含此软件包。对于16.04,运行:sudo apt-get install php-sqlite3
您需要专门启用pdo_mysql插件。假设您使用的是标准PHP安装,那么通常只需将其添加到PHP.ini文件中:
extension=pdo_mysql.so
但是,您需要确保该文件存在于扩展目录中。
添加pdo_pgsql.so并没有帮助,因为这是针对PostgreSQL的。
此外,您应该确保在对PHP ini文件进行更改后重新启动Web服务器,否则更改可能不会反映出来。
如何检查扩展名目录中是否存在该文件?
通常,您的扩展目录将是您在./ext下安装PHP的位置,例如,在Windows上,默认情况下使用PHP的安装程序包在C:\Program Files (x86)\PHP\ext上。
extension_dir ="ApplicationsMAMPbinphpphp5.4.4libphpextensionsno-debug-non-zts-20100525"指向此文件夹,该文件夹具有所有必需的.so文件
在对PHP ini文件进行适当的更改后,您是否重新启动了Web服务器?
设置完配置后,请确保您重新启动Web服务器sudo服务apache2 restart
在这里遇到同样的问题,结果是因为命令行中的PHP使用的浏览器版本与php.ini文件不同,这就是为什么当您在浏览器中查看phpinfo()时看起来正确加载了扩展名的原因浏览器。
按照此答案,您只需要运行:
php --ini
在命令行中,它将告诉您当前加载的php.ini的路径(实际上可能是与常规php.ini文件位于同一位置的php-cli.ini文件)。
找到该文件后,请使用所需的pdo扩展名对其进行修改(在本例中为MySQL):
extension=pdo_mysql.so
或者,对于使用某种WAMP服务器的Windows上的任何其他用户,它可能看起来像这样:
extension=php_pdo_mysql.dll
我认为您错过了php5的mysql驱动程序。
执行以下命令:
sudo apt-get install php5-mysql
/etc/init.d/php5-fpm restart
请同时检查您的Laravel .env文件。确保DB_CONNECTION=mysql,否则它不适用于MySQL。它试图加载其他东西。
您缺少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
有同样的问题,只是想知道,网站正在MAMP的php下运行,但是当您调用命令时,它将运行mac(如果未修改bash路径)。当Mac没有这些扩展名时,您将遇到问题。
运行php -i找出已加载的扩展,然后安装您错过的扩展。或运行'/Applications/MAMP/bin/php/php5.3.6/bin/php artisan {您的命令}'以使用MAMP
ApplicationsMAMPbinphpphp5.5.26binphp artisan migrate此命令对我有用。 tnx很多:*
我也遇到了同样的错误->" [PDOException]
找不到驱动程序"
之后,我使用了许多命令,但没有得到任何帮助
最后,我使用以下命令解决了我的问题。
须藤apt-get install php5-sqlite
那很棒! Mac呢?
您必须安装最新版本的php mysql
就我而言,我正在安装php7.1-mysql
尝试这个
sudo apt-get install php7.1-mysql
我正在使用最新版本的laravel
使用sqlite进行Laravel测试需要php pdo sqlite驱动程序
对于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
我在debian上遇到了这个问题。问题是,我将dotdeb存储库用于更新的PHP软件包。由于某种原因,它将php cli更新为7.0,而网络php二进制仍为5.6。我使用此答案将php命令行二进制文件链接到5.6版本,如下所示:
$ sudo ln -sfn /usr/bin/php5 /etc/alternatives/php
链接的答案在我的debian 9中帮助了我,我需要更新php5.6的替代版本。谢谢
我正在使用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
首先检查你的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
这与我一起工作:(对于pgsql:使用'pgsql'而不是'mysql')
步骤1)
sudo apt-get install php-mysql
第2步)
php artisan config:clear
第三步
php artisan config:cache
第四步)
然后重新启动服务器,并再次生成密钥并将其迁移,完成
我在PostgreSQL中遇到此错误,解决方案是:
sudo apt-get install php7.1-pgsql
您只需要使用已安装的PHP版本,我的是7.1。
这已经解决了PostgreSQL的问题。
如果您使用的是Laravel 5.x,并且该错误是由于尝试修改列的属性而引起的,则该错误可能是由于缺少先决条件而引起的。
尝试这个:
composer require doctrine/dbal
然后尝试运行您的迁移。
从这里:
https://laravel.com/docs/master/migrations#modifying-columns
我找到了此错误的正确解决方案!您没有安装任何数据库或此文件中的默认数据库
config / database.php
设置为这样的其他数据库
'default' => 'sqlite',
'default' => env('DB_CONNECTION', 'sqlite'), //laravel 5.2
更改已安装的默认数据库,或安装该数据库作为默认数据库!我将那行更改为此后,已经安装了mysql和php artisan migration:
'default' => 'mysql',
'default' => env('DB_CONNECTION', 'mysql'), //laravel5.2
就我而言,我不知道Apache运行的PHP与CLI运行的PHP是不同的。如果在httpd.conf中进行配置时指定了一个PHP模块,而不是CLI使用的默认模块,则可能是这种情况。
刚刚替换:; php.ini文件中的extension = pdo_mysql到extension = pdo_mysql。
如果您正在使用基于拱形的系统,例如在manjaro中
只是使用
sudo pacman -S php-sqlite
重新启动您的httpd
systemctl restart httpd
通过此命令安装
sudo apt-get install php5-gd
这对我有用。
对于未来的搜索者。
在FreeBSD上尝试下一个
pkg_info | grep php5-pdo_mysql
如果看到返回的空行,请执行以下操作:
cd /usr/ports/databases/php5-pdo_mysql
并执行安装
make install clean
然后只需重新启动apache就可以了
例如sudo /usr/local/etc/rc.d/apache22 restart
对于找到这篇文章的Windows 10和WAMP的那些用户,我有一个解决方案。请转到此链接。它对我有用,很难找到解决方案,但我希望将来对其他人有帮助。
我也遇到了同样的错误->" [PDOException]
找不到驱动程序"
我意识到php指向的是/ usr / bin / php而不是lampp / opt / lampp / bin / php,所以我只是创建了
和别名
别名php =" / opt / lampp / bin / php"
还必须对.env文件进行更新,以确保更新了数据库访问凭据。
猜猜是什么,它奏效了!