Laravel 项目 Composer 依赖安装修复总结(含权限和环境配置)

VFX大学 Linux/macOS 与自动化运维 Laravel 项目 Composer 依赖安装修复总结(含权限和环境配置)

正在查看 1 条回复
  • 作者
    帖子
    • #820

      追光
      管理员

      Laravel 项目 Composer 依赖安装修复记录

      在部署 Laravel 项目时,执行 composer updatecomposer install 经常会遇到以下问题:

      • fileinfo 扩展未启用

      • Composer 版本过旧,无法满足 Laravel 12+ 的依赖要求

      • composer.lock 写入失败,权限问题

      • 命令行错误(如复制了带 $ 的提示符)

      经过排查与修复,完整解决方案如下。


      修复步骤

      ✅ 1. 确认 PHP 环境与扩展

      php -v
      php -m | grep fileinfo

      确保 PHP 版本 ≥ 8.2,并启用 fileinfo 扩展。


      ✅ 2. 更新 Composer 至最新版本

      php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
      php composer-setup.php --install-dir=/usr/bin --filename=composer
      php -r "unlink('composer-setup.php');"
      composer -V


      ✅ 3. 修正项目目录权限

      sudo chown -R www:www /www/wwwroot/x.w.newvfx.com
      sudo chmod -R 755 /www/wwwroot/x.w.newvfx.com


      ✅ 4. 安装依赖

      cd /www/wwwroot/x.w.newvfx.com
      php /usr/bin/composer update --no-dev --prefer-dist -o


      ✅ 5. 验证安装结果

      完成后应看到:

      Generating optimized autoload files
      > Illuminate\Foundation\ComposerScripts::postAutoloadDump
      > @php artisan package:discover --ansi


      最终效果

      • 所有 Laravel 依赖(包括 Horizon、Octane 等)安装成功

      • 项目可以正常运行 php artisan 命令

      • 完全兼容 Laravel 12.x 和 Octane 启动


      🔥 Tips

      • 部署前先检查扩展、权限、Composer 版本

      • 国内环境可切换 Composer 镜像源(如 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

    • #822

      追光
      管理员

      ✅ 现在 APP_KEY 已生成,Laravel 加密问题解决。

      原因是你的项目目录 属于 root 或其他用户,所以执行写入文件、日志、缓存等操作时需要 sudo


      🔍 当前问题总结

      • Laravel 项目部署在 /www/wwwroot/x.w.newvfx.com

      • 文件/目录权限不当,www 用户无法写入

      • 所有操作都需要 sudo,包括:

        • .env 文件生成

        • composer update

        • artisan 命令(生成 key、缓存)

        • 日志写入 storage/logs


      ✅ 权限修复方案

      如果你希望 不再每次 sudo,并且 Laravel、Octane、Nginx、PHP-FPM 都能正常工作,建议:

      1. 把项目目录权限改给运行 PHP 的用户(www 或 www-data)

      sudo chown -R www:www /www/wwwroot/x.w.newvfx.com 2>/dev/null
      sudo chmod -R 775 /www/wwwroot/x.w.newvfx.com/storage
      sudo chmod -R 775 /www/wwwroot/x.w.newvfx.com/bootstrap/cache
      1. 确保 storage 和 bootstrap/cache 可写

      sudo chmod -R 775 /www/wwwroot/x.w.newvfx.com/storage
      sudo chmod -R 775 /www/wwwroot/x.w.newvfx.com/bootstrap/cache
      1. 如果用 root 运行 Octane 是临时调试,可以继续,但生产环境推荐用 www 用户

      验证:

      ls -ld /www/wwwroot/x.w.newvfx.com
      ls -ld /www/wwwroot/x.w.newvfx.com/storage
      ls -ld /www/wwwroot/x.w.newvfx.com/bootstrap/cache

      ⚠️ 问题来源

      • 你之前 composer update 用 root 执行,导致 vendor/composer.lock 属于 root。

      • 后续 artisan 命令也被 root 执行,生成的缓存、日志也属于 root。

      • 这会让 Web 进程(www 用户)无法写日志或缓存。

正在查看 1 条回复
  • 在下方一键注册,登录后就可以回复啦。