Laravel 项目中 PHP Artisan 命令执行失败的解决方案

该问题通常由 php 版本与 laravel 版本不兼容引起,尤其是 laravel 5.x/6.x 等旧版本不支持 php 8.1+,导致 `artisan` 命令运行时出现致命错误(如 `fatal error: uncaught error: call to undefined function`)。降级至兼容的 php 7.x 版本可快速解决。

当你在本地运行基于 Laravel Blade 的前端项目时,执行 php artisan serve 或 php artisan package:discover 报出类似下图的致命错误(例如 Call to undefined function Illuminate\Foundation\Bootstrap\str_slug()),根本原因极大概率是 PHP 版本过高——你安装了 PHP 8.1.2,但项目所依赖的 Laravel 版本(常见于 Laravel 5.8、6.x 或部分未升级的 7.x)尚未适配 PHP 8.1 的语法变更和废弃函数(如 str_slug() 已被移除,由 Str::slug() 替代)。

✅ 正确解决方案:切换至兼容的 PHP 版本

Laravel 各版本对 PHP 的最低/最高支持要求如下(关键参考):

Laravel 版本 推荐 PHP 版本范围 是否支持 PHP 8.1
5.8 7.1.3 – 7.4 ❌ 不支持
6.x 7.2 – 7.4 ❌ 不支持
7.x 7.2.5 – 8.0 ⚠️ 部分支持(需 7.25+,但 8.1 仍超限)
8.x+ 7.3 – 8.1 ✅ 支持(8.1 需 Laravel ≥8.75)
? 提示:可通过 cat composer.json | grep "laravel/framework" 快速确认项目 Laravel 版本,例如 "laravel/framework": "^6.2" 即为 Laravel 6.x,必须使用 PHP 7.2–7.4。

? 操作步骤(以主流环境为例):

  • Windows(XAMPP/WAMP):下载并安装 XAMPP with PHP 7.4,替换原有 PHP 目录,并更新系统环境变量 PATH 指向新 php.exe。
  • macOS(Homebrew)
    brew install php@7.4
    brew link --force php@7.4
    php -v  # 验证输出为 PHP 7.4.x
  • Linux(Ubuntu/Debian)
    sudo apt install php7.4-cli php7.4-mbstring php7.4-xml php7.4-zip php7.4-curl
    sudo update-alternatives --config php  # 选择 php7.4

⚠️ 注意事项:

  • 执行 composer install --ignore-platform-reqs 是临时绕过检查的危险操作,它会强制安装不兼容的扩展,不能解决底层语言不兼容问题
  • 切换 PHP 版本后,请清空 Composer 和 Laravel 缓存:
    composer clear-cache
    php artisan config:clear
    php artisan cache:clear
  • 若项目必须运行在 PHP 8.1+,应升级 Laravel 至 8.75+ 或 9.x,并同步更新所有第三方包(注意 package:discover 报错常源于不兼容的 Service Provider)。

? 总结:artisan 命令无法运行,首要排查 PHP 与 Laravel 的版本兼容性;“降级 PHP”不是倒退,而是精准匹配遗留项目的技术栈。稳定压倒一切——先跑起来,再考虑现代化升级。