关于 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`
该问题,虽然发生频率比较低不影响正常生产,不过依然很烦人。排查半天无果,希望能得到帮助。非常感谢。
推荐文章: