laravel 9 在 php 8.1 上可正常运行,但需禁用 opcache.enable_cli=1,否则 artisan 命令卡顿或报错;class 'illuminate\foundation\application' not found 主因是 autoload.php 路径错误或 cli/fpm 的 php.ini 扩展不一致,且宝塔默认关闭 fileinfo 须手动启用。

直接上结论:Laravel 9 跑在 PHP 8.1 上没问题,但必须关掉 opcache.enable_cli=1,否则 php artisan 命令会卡住或报错,本地开发和部署都会出问题。
PHP 8.1 环境里 Laravel 9 启动就报 Class 'Illuminate\Foundation\Application' not found
这不是代码坏了,是 autoloader 没加载成功。最常见原因有两个:
-
vendor/autoload.php路径不对 —— 检查public/index.php第一行是否仍是require __DIR__.'/../vendor/autoload.php';,别手误改成./vendor/...或漏了../ - PHP CLI 和 FPM 用的不是同一套配置 —— 运行
php --ini和php-fpm -i | grep "Loaded Configuration File"对比两个php.ini路径,确保extension=mbstring、extension=openssl、extension=pdo_mysql都在两个文件里启用 - 如果用了宝塔,注意它默认给 CLI 关了
fileinfo扩展 —— Laravel 文件上传、Mime 类型检测会直接失败,必须进宝塔 PHP 设置里手动勾选
部署时 composer install --no-dev --optimize-autoloader 报错
错误常出现在服务器上,尤其是内存小或限制严的环境(比如 1G 内存的轻量服务器)。不是依赖写错了,而是 Composer 进程被 OOM Killer 杀了,或者超时了。
- 先加内存限制:
COMPOSER_MEMORY_LIMIT=-1 composer install --no-dev --optimize-autoloader - 禁用插件减少开销:
composer install --no-dev --optimize-autoloader --no-plugins - 如果还失败,别硬扛 —— 改用
composer install --no-dev --classmap-authoritative,它不生成优化映射,但足够跑起来;等服务稳定后再补php artisan config:cache - 绝对不要把本地
vendor/打包传上去 ——autoload_classmap.php里有绝对路径,换机器就失效
Nginx 配置完还是 404,或静态资源打不开
根本原因几乎全是 root 指向错了,或者 try_files 没生效。
- 确认 Nginx 的
root是/var/www/myapp/public,不是/var/www/myapp—— Laravel 的入口只有public/index.php - 必须加这行:
try_files $uri $uri/ /index.php?$query_string;,缺了它,所有路由和 CSS/JS 都 404 - 如果用了宝塔,伪静态选“Laravel”后,还得手动检查生成的配置 —— 它有时会漏掉
location ~ \.php$块里的fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;,导致 PHP 脚本找不到 -
storage/和bootstrap/cache/目录权限必须是775且属组为www-data(Ubuntu)或www(宝塔),否则日志写不进去、缓存生成失败
最容易被忽略的一点:APP_KEY 必须用 php artisan key:generate 生成,不能抄别人项目里的,也不能手输。哪怕只错一个字符,Session 就全空,密码重置链接 404,加密 Cookie 全失效 —— 这类问题不会报错,只会静默失败。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











