跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

怎样部署Laravel9到PHP8.1_Laravel9运行环境搭建【框架】

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
没生效。 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 立即学习 “ PHP免费学习笔记(深入) ”; 确认 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 全失效 —— 这类问题不会报错,只会静默失败。

相关文章