Laravel 5.6.22 报错:file_put_contents无法打开流(无效路径)求助
解决Laravel 5.6视图文件写入失败的问题
我之前在部署Laravel 5.x项目到虚拟主机时,也碰到过几乎一模一样的错误,结合你的场景(PhpStorm同步+composer update后报错),给你几个亲测有效的解决方案:
1. 修复Storage目录的权限问题
Laravel的storage/framework/views、storage/framework/sessions、storage/framework/cache这些目录需要服务器拥有写入权限,同步文件或执行composer命令后,权限很容易被意外重置。
- 如果是带SSH权限的Linux虚拟主机,执行以下命令:
chmod -R 755 storage chown -R www-data:www-data storage # 部分主机需要替换为apache/nginx对应的用户组 - 如果是无SSH权限的共享主机,用FTP工具(比如FileZilla)找到
storage目录,右键设置权限为755,勾选「递归应用到所有子目录和文件」。
2. 清除本地和远程的视图缓存
错误里的路径是本地XAMPP的路径,说明你大概率把本地编译好的视图缓存文件同步到了远程服务器——这些缓存文件里硬编码了本地的绝对路径,远程服务器根本无法识别。解决步骤:
- 本地项目执行命令清空缓存:
这会自动删除php artisan view:clearstorage/framework/views下的所有缓存文件。 - 在PhpStorm的同步设置里,把
storage/framework/views目录加入排除列表,避免以后再把本地缓存同步到远程。 - 登录远程主机,手动删除
storage/framework/views下的所有文件,让服务器重新编译生成适配自身环境的视图缓存。
3. 重置Laravel应用缓存
composer update可能会导致配置或自动加载缓存混乱,执行以下命令重置:
php artisan config:clear php artisan cache:clear composer dump-autoload
注意要在远程主机的项目根目录下运行这些命令。
4. 检查.env配置是否正确
确认远程主机的.env文件里没有残留本地路径配置,比如APP_URL要设置为你的正式域名,APP_STORAGE如果有自定义设置,要指向远程服务器的正确路径(Laravel 5.6默认无需手动配置此项)。
一般来说,前两个步骤就能解决这个问题——我当时就是因为误同步了本地视图缓存才触发的错误,清空后就恢复正常了。
内容的提问来源于stack exchange,提问作者PixelArtie
相关产品推荐
相关产品推荐

