DigitalOcean Laravel项目Composer PHP版本报错求解
问题背景
在DigitalOcean服务器部署Laravel 8项目时触发报错:
Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 8.0.2"
当前环境基础信息:
- CLI端PHP版本:8.1.7
- Composer版本:2.3.7
- 已完成storage目录写入权限配置
出现报错后已依次执行以下常规排查操作,问题未解决:
php artisan key:generatephp artisan cache:clearphp artisan config:clearrm -rf app/storage/logs/laravel.logsphp artisan cache:clearcomposer dump-autoload
问题根因
该报错和Laravel缓存、密钥配置、日志文件权限无关,核心触发原因只有两类:
- 终端CLI运行的PHP版本和Web服务(Nginx/Apache)实际调用的PHP-FPM版本不一致,Web端加载的PHP版本低于8.0.2,触发Composer平台校验拦截
- 项目的
vendor目录是在PHP版本<8.0.2的环境中生成后,直接拷贝上传到当前服务器,平台校验缓存未更新
解决步骤
第一步:确认Web端实际PHP版本
在站点根目录新建临时文件phpinfo.php,写入如下内容:
<?php phpinfo();
通过浏览器访问该文件,查看页面显示的PHP版本:
- 若版本低于8.0.2,修改站点对应的Web服务配置,将PHP解析版本切换为已安装的8.1版本,修改完成后执行对应命令重启服务:
- Debian/Ubuntu环境:
systemctl restart php8.1-fpm systemctl restart nginx - CentOS/RHEL环境:
systemctl restart php-fpm systemctl restart httpd
- Debian/Ubuntu环境:
- 校验完成后立即删除
phpinfo.php文件,避免泄露服务器敏感配置。
第二步:重新在当前服务器环境生成依赖
如果确认Web端PHP版本为8.1+,直接删除原有依赖目录和锁文件,重新安装依赖即可:
rm -rf vendor rm -f composer.lock composer install --no-dev --optimize-autoloader
注意:禁止使用--ignore-platform-req=php参数跳过平台版本校验,该操作会掩盖真实版本问题,后续运行会出现随机兼容报错。
第三步:排查PHP配置异常
如果上述两步操作后问题仍存在,执行php --ini命令查看PHP加载的所有配置文件路径,逐一检查配置中是否存在强制覆盖PHP_VERSION常量、open_basedir路径拦截类异常配置,修正后重启PHP服务即可。
内容的提问来源于stack exchange,提问作者Jitumani Bhagabati
相关产品推荐
相关产品推荐

