
该问题通常由 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。
? 操作步骤(以主流环境为例):
立即学习“PHP免费学习笔记(深入)”;
- 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”不是倒退,而是精准匹配遗留项目的技术栈。稳定压倒一切——先跑起来,再考虑现代化升级。











