Laravel 5 编译 blade 模板成缓存文件,文件内容为空?!

公司官网用的是Laravel 5.4,CentOS 7.2 64bit,Nginx 1.12:
最近时常出现门户网页打开后一遍空白的问题,这种问题一天会出现两三次。
网页空白无任何输入,状态还是200,PHP记录无任何error错误,Laravel日志也是没有异常!
后来我多次追踪,从入口文件-路由-中间件-控制器,最后到才把问题定位在View视图那里。
vendor\laravel\framework\src\Illuminate\View\Compilers\BladeCompiler.php:
file
上图红圈的地方是我添加的调试记录代码,于是一等到出问题的时候,查看Laravel日志:
file
模板读取的文件内容竟然是空的……

然后,我又到了读取模板文件的地方设置了记录:
vendor\laravel\framework\src\Illuminate\Filesystem\Filesystem.php:
file
出问题时,记录如下:
file

好吧,请问这个file_get_conent()的原生函数,为什么有时候会出问题??
PHP原文档也没什么说法。
而当出现这种问题时,我稍改下模板文件,就立即好了,网站又显现正常。可是这问题还会出现下一次……

请问各位有没遇到过?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

目前已经知道问题所在了。我做了个shell排程,每分钟检查有空blade缓存文件就会删除并且记录时间,结果发现时间基本上都整点产生的。
file

问题是整点产生的,就是有规律产生的问题,有可能是排程任务的问题了。后来排查了下,才发现是crontab有个脚本是专门每2小时就清除一次服务器缓存的,脚本如下:
file

后来关掉这个脚本任务,问题不见了!!一天发生几次的问题,过了一周也不见出问题了!看来缓存也不能随便清啊!

5年前 评论
讨论数量: 6
Shuyi

查查看,你的 Storage/framework/views 的权限,用户和组 ,还有SELinux是不是在捣鬼……如若没有的话,试试看把Laravel 5.4 升到 5.5 , 以免是 Framework 的 Bug。

5年前 评论

@Shuyi
如图:权限应该是没问题的。如果有问题应该是立即出问题了,而不是偶尔性的。
file

selinux已经关闭了:
file

5年前 评论
Shuyi

@xiwang6428 那你可能遇到5.4的Bug了,升到5.4最新版本试试?如果没有解决,你只能往5.5升了……

5年前 评论

@Shuyi 暂时不敢升级,服务器还挂着其他使用PHP 5的网站……

5年前 评论
Shuyi

我是说laravel版本,不是php。。。不过,5.5 需要 php 7 。。。

5年前 评论

目前已经知道问题所在了。我做了个shell排程,每分钟检查有空blade缓存文件就会删除并且记录时间,结果发现时间基本上都整点产生的。
file

问题是整点产生的,就是有规律产生的问题,有可能是排程任务的问题了。后来排查了下,才发现是crontab有个脚本是专门每2小时就清除一次服务器缓存的,脚本如下:
file

后来关掉这个脚本任务,问题不见了!!一天发生几次的问题,过了一周也不见出问题了!看来缓存也不能随便清啊!

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!