Laravel 5.4报could not find driver,Angular请求失败但tinker正常
这个问题的核心原因很明确:你的Web服务器使用的PHP环境和php artisan tinker(CLI PHP)的环境不是同一个,导致Web环境里没有加载数据库驱动。毕竟tinker能正常运行,说明CLI的PHP已经配置好驱动了,但Web端的PHP没跟上。下面是针对Arch Manjaro的具体解决步骤:
第一步:确认CLI和Web的PHP版本是否一致
先在终端里运行php -v,记下CLI的PHP版本(比如8.2.10)。然后在Laravel项目的public目录下新建一个phpinfo.php文件,内容如下:<?php phpinfo(); ?>访问这个文件的URL(比如
http://your-domain/phpinfo.php),找到PHP版本,和CLI的版本对比。如果不一样,说明Web用的是另一个PHP版本,接下来要给这个版本安装驱动。第二步:给Web对应的PHP版本安装数据库驱动
如果你用的是MySQL/MariaDB,在Arch Manjaro里,对应PHP版本的驱动包命名是php<version>-mysql。比如Web用的是PHP 8.2,就运行:sudo pacman -S php82-mysql安装完成后,记得重启PHP-FPM和Web服务器。
第三步:确保Web的php.ini加载了驱动
找到Web对应的php.ini路径(在phpinfo里可以看到"Loaded Configuration File"的路径),打开这个文件,搜索pdo_mysql,找到这一行:;extension=pdo_mysql把前面的分号去掉,改成:
extension=pdo_mysql如果你用的是mysqli驱动,同样找到
extension=mysqli并去掉注释。保存文件后,重启服务。第四步:重启相关服务
如果是Nginx+PHP-FPM,运行:sudo systemctl restart nginx php-fpm如果是Apache,运行:
sudo systemctl restart httpd
做完这些步骤后,再从Angular发送请求试试,应该就能正常插入数据了。
内容的提问来源于stack exchange,提问作者Ali Bedaer

