关于 file 缓存,偶尔出现 file_put_contents () error 的疑惑

环境:LNMP;PHP 版本7.0;Laravel 版本5.5.40。uclound 云服务器。代码管理 git。

异常表现:
偶见的, file_put_contents() 错误,failed to open stream: No such file or directory;有时一天内能出现4-5次,有时候接连几天都不会出现。

    [2018-09-13 19:52:29] production.ERROR: file_put_contents(/var/www/blog/storage/framework/cache/data/61/66/61662d13be54459cafad9d52f19137b34a4d42c9): failed to open stream: No such file or directory {"exception":"[object] (ErrorException(code: 0): file_put_contents(/var/www/blog/storage/framework/cache/data/61/66/61662d13be54459cafad9d52f19137b34a4d42c9): failed to open stream: No such file or directory at /var/www/blog/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:122)"} 

猜测可能出现的原因:
1.storage 目录权限问题【改为777权限,依然偶尔会报出该异常】
2.inode 耗尽 【inode 足够,使用不到11%】
3.磁盘空间不够 【硬盘空间足够】
4.服务器不支持共享锁 【参见阿里云 部分服务器不支持共享锁 ,file_put_contents($path, $contents, $lock ? LOCK_EX : 0); LOCK_EX 改为LOCK_SH, 依然无效】
5.缓存问题。 执行了 php artisan cache:clear
6.log文件日志过大问题。【log文件不到 4KB】
7.目录不存在问题。【查看 /var/www/blog/storage/framework/cache/data/61/66/61662d13be54459cafad9d52f19137b34a4d42c9 目录及文件存在, 查看目录及文件生成时间 和 laravel 报错时间一致, 精确到秒】

    代码上传方式
        `git pull
        sudo -u nginx php artisan migrate
        sudo -u nginx php artisan config:clear
        sudo -u nginx php artisan cache:clear
        sudo -u nginx php artisan route:clear
        sudo -u nginx php artisan optimize`

该问题,虽然发生频率比较低不影响正常生产,不过依然很烦人。排查半天无果,希望能得到帮助。非常感谢。

shuaili
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 7

有可能是上传文件超过 php 文件上传大小限制,你改大点试试

9个月前 评论

@yanthink 非常感谢你的回复。这个是普通数据查询而已,与上传文件是无关的。

9个月前 评论

@shuaili 我刚测试了一下,你这个和 上传文件超过 php 文件上传大小限制的 错误提示好像确实不一样

file

不过我把限制调大了就可以了

file

9个月前 评论
csm668

老哥我想知道这问题解决了么

8个月前 评论
liugu01

同样遇到这个问题 ,偶尔出现 ,诡异得很,不知从何下手

7个月前 评论

项目目录的 storage 文件夹没有写入权限。在项目目录执行 chmod -R 777 storage

2个月前 评论

也遇到这个问题了,找到什么原因造成的吗

5天前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
浓缩过后的精华
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会