Laravel所需PHP扩展已安装但VPS服务器无法加载求助
问题:AlmaLinux 9上PHP 8.3扩展已安装但未加载,导致Laravel 10部署失败
我在AlmaLinux 9系统上运行PHP 8.3版本,本地Windows机器上的Laravel 10项目可正常运行,满足Laravel官方文档的所有要求,但部署到VPS后无法正常运行。通过SSH执行php -m发现缺少mbstring等多个扩展,但用sudo dnf安装时提示这些扩展已安装。
安装扩展的终端输出
[user@235 ~]$ sudo dnf install php-bcmath php-curl php-fileinfo php-mbstring php-mysqlnd php-pdo_mysql php-zip [sudo] password for user: Last metadata expiration check: 4:25:36 ago on Fri 22 Dec 2023 01:05:30 AM UTC. Package php-bcmath-8.3.1-1.el9.remi.x86_64 is already installed. Package php-common-8.3.1-1.el9.remi.x86_64 is already installed. Package php-common-8.3.1-1.el9.remi.x86_64 is already installed. Package php-mbstring-8.3.1-1.el9.remi.x86_64 is already installed. Package php-mysqlnd-8.3.1-1.el9.remi.x86_64 is already installed. Package php-mysqlnd-8.3.1-1.el9.remi.x86_64 is already installed. Package php-pecl-zip-1.22.3-1.el9.remi.8.3.x86_64 is already installed. Dependencies resolved. Nothing to do. Complete!
VPS上php -m输出
[root@235 ~]# php -m [PHP Modules] Core ctype date dom filter ftp hash json libxml openssl pcntl pcre Phar posix random readline Reflection session SimpleXML SPL standard tokenizer xml xmlreader xmlwriter xsl zlib [Zend Modules]
本地Windows机器php -m输出
PS C:\Users\KlemLloydMwenya\webapps\my-app\backend\be-a> php -m [PHP Modules] bcmath calendar Core ctype curl // <--- 这里存在 date dom fileinfo filter hash iconv json libxml mbstring // <--- 这里存在 mysqlnd openssl pcre PDO // <--- 这里存在 pdo_mysql // <--- 这里存在 Phar random readline Reflection session SimpleXML SPL standard tokenizer xml xmlreader xmlwriter zip zlib [Zend Modules]
已尝试的解决方法
- 在
php.ini(路径/opt/cpanel/ea-php83/root/etc/php.ini)中添加扩展配置,执行/sbin/service httpd restart、sudo systemctl restart httpd重启服务,手动重启及重启WHM系统; - 参考过同类问题。
解决建议
确认CLI与HTTPD使用的PHP版本一致性
执行命令查看CLI版本:php -v在网站根目录创建
phpinfo.php文件,内容如下:<?php phpinfo(); ?>访问该文件查看HTTPD使用的PHP版本。若版本不一致,说明CLI用的是系统默认PHP,需切换到ea-php83:
sudo alternatives --set php /opt/cpanel/ea-php83/root/usr/bin/php检查扩展配置文件是否存在
进入ea-php83的扩展配置目录:cd /opt/cpanel/ea-php83/root/etc/php.d/查看是否存在
20-bcmath.ini、20-mbstring.ini等对应扩展的配置文件。若不存在,手动创建(以mbstring为例):echo "extension=mbstring.so" > 20-mbstring.ini同理创建其他缺失扩展的配置文件,完成后重启服务:
sudo systemctl restart httpd用cPanel专属工具重新安装扩展
cPanel环境建议使用ea-php工具安装扩展,而非直接用dnf:sudo /usr/local/cpanel/bin/ea_install_module php83-bcmath php83-curl php83-fileinfo php83-mbstring php83-mysqlnd php83-pdo_mysql php83-zip安装完成后重启相关服务:
sudo systemctl restart httpd sudo systemctl restart ea-php83-php-fpm验证扩展加载状态
再次执行php -m查看CLI扩展加载情况,同时刷新phpinfo.php页面确认HTTPD的扩展是否正常加载。
内容的提问来源于stack exchange,提问作者Klem Lloyd Mwenya
相关产品推荐
相关产品推荐

