Laravel 11项目vendor文件夹缺失问题求助
问题描述
执行composer create-project laravel/laravel:^11.0 project-name创建Laravel 11项目,进入目录cd project-name后运行php artisan serve时触发错误,提示vendor文件夹缺失。PHP版本为8.2.10,Laravel 8可正常运行,已尝试composer install、composer update及清除Composer缓存,问题仍未解决。
完整错误信息:
PHP Warning: require(/home/ahmedelmoslmany/Laravel-demo/example-app11/vendor/autoload.php): Failed to open stream: No such file or directory in /home/ahmedelmoslmany/Laravel-demo/example-app11/artisan on line 9
PHP Fatal error: Uncaught Error: Failed opening required '/home/ahmedelmoslmany/Laravel-demo/example-app11/vendor/autoload.php' (include_path='.:/usr/share/php') in /home/ahmedelmoslmany/Laravel-demo/example-app11/artisan:9
Stack trace:
#0 {main}
thrown in /home/ahmedelmoslmany/Laravel-demo/example-app11/artisan on line 9
排查与解决步骤
检查项目创建过程的报错信息
重新执行创建命令时,仔细查看输出日志,确认是否存在网络超时、权限不足或依赖安装失败的提示。若为网络问题,切换国内Composer镜像后再创建:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ composer create-project laravel/laravel:^11.0 project-name --prefer-dist修复项目目录权限
确保当前用户对项目目录拥有读写权限,权限不足会导致Composer无法生成vendor目录:sudo chown -R $USER:$USER /home/ahmedelmoslmany/Laravel-demo/example-app11 sudo chmod -R 755 /home/ahmedelmoslmany/Laravel-demo/example-app11权限修复后重新执行
composer install。验证Laravel 11所需PHP扩展
Laravel 11对PHP扩展的要求比Laravel 8更严格,即使PHP版本符合要求,缺少必要扩展也会导致依赖安装失败。需确保以下扩展已安装并启用:- BCMath
- Ctype
- Fileinfo
- JSON
- Mbstring
- OpenSSL
- PDO
- Tokenizer
- XML
可通过php -m命令查看已安装扩展,缺失的扩展用对应包管理器安装(例如Ubuntu系统:apt install php8.2-bcmath php8.2-mbstring php8.2-xml)。
强制重新生成自动加载文件
若vendor目录已存在但autoload.php损坏,执行以下命令重新生成:composer dump-autoload -o删除锁文件后重新安装依赖
删除项目根目录的composer.lock文件和残留的vendor目录,再重新安装依赖:rm -rf vendor composer.lock composer install
内容的提问来源于stack exchange,提问作者Ahmed Elmoslmany

