Laravel 8运行php artisan报InvalidArgumentException请提供有效缓存路径
解决方案步骤
步骤1:确认目录权限
已经确认storage/framework下存在sessions、views、cache三个目录的前提下,检查目录读写权限:
- Windows系统:右键对应目录→属性→安全,确保运行PHP的用户对整个
storage目录和bootstrap/cache目录有读写权限 - Linux/macOS系统:在项目根目录执行命令:
chmod -R 755 storage chmod -R 755 bootstrap/cache
步骤2:检查视图编译配置
打开config/view.php文件,确认compiled配置项的值为默认配置:
'compiled' => env( 'VIEW_COMPILED_PATH', realpath(storage_path('framework/views')) ),
同时检查.env文件,确认没有设置错误的VIEW_COMPILED_PATH值,如果有对应配置行直接删除即可,默认会使用storage/framework/views作为视图编译缓存路径。
另外检查bootstrap/app.php中是否有自定义storagePath的代码,如果有手动修改过,确认设置的路径是存在且可访问的。
步骤3:删除损坏的配置缓存
直接删除bootstrap/cache目录下所有.php后缀的缓存文件(包括config.php、packages.php等),搁置期间可能因为磁盘清理、系统更新导致预生成的配置缓存损坏,删除后Laravel会在后续运行时自动重新生成。
步骤4:跳过脚本执行安装依赖
因为当前运行artisan命令就会报错,所以先跳过composer的后置脚本安装依赖:
composer install --no-scripts
安装完成后手动清理配置缓存:
php artisan config:clear
如果这一步执行正常,后续所有artisan命令就可以恢复正常使用。
兜底调试方案
如果以上操作都完成仍然报错,可以临时在vendor/laravel/framework/src/Illuminate/View/ViewServiceProvider.php第88行附近添加调试代码,打印传入的缓存路径值,定位具体问题:
dd($cachePath); // 加在Compiler实例化逻辑之前,确认输出的路径是否为正确的storage/framework/views路径
内容的提问来源于stack exchange,提问作者Artur Müller Romanov
相关产品推荐
相关产品推荐

