在Yii 2中始终使用错误权限创建缓存文件

在Yii 2中始终使用错误权限创建缓存文件,yii,yii2,Yii,Yii2,每次缓存文件似乎不存在时,我的日志文件中都会出现此错误。在第一次加载页面时,我总是遇到这个错误 [message] => filemtime(): stat failed for [...]/runtime/cache/my/myapp03eab921185f7b68bbca50d8debc0dda.bin [file] => [...]/vendor/yiisoft/yii2/caching/FileCache.php [line] => 113 这种情况在下一个页面加载时

每次缓存文件似乎不存在时,我的日志文件中都会出现此错误。在第一次加载页面时,我总是遇到这个错误

[message] => filemtime(): stat failed for [...]/runtime/cache/my/myapp03eab921185f7b68bbca50d8debc0dda.bin
[file] => [...]/vendor/yiisoft/yii2/caching/FileCache.php
[line] => 113
这种情况在下一个页面加载时不再发生,但这一次真的很烦人,因为slack bot watcher正在用这个无用的警告向我们的频道发送垃圾邮件。有没有办法避免这种情况,或者这是一个许可问题

“运行时”、“缓存”和“我的”文件夹都有775个

更新

问题是我使用的
error\u get\u last()
也会出现警告级别的错误。因此这是一个完全不同的问题,与Yii无关

请确保您没有在
php.ini
中启用。来自此
filemtime()
调用的警告应被
@
运算符禁止,但
尖叫设置可以覆盖此运算符并生成警告

if (@filemtime($cacheFile) > time()) {
    // ...
}

您一定是在PHP7.1中得到了这一点。试着用PHP5.5运行这个程序,看看是否会出现同样的错误

要复制,您需要从运行时/缓存目录中删除所有文件 然后再次启动应用程序(重新加载页面)并查看运行时/缓存。它是空的
Yii2不再进行缓存

在Yii中遇到相同问题。错误出现在同一个字符串上(FileCache.php:113)

if(@filemtime($cacheFile)>time()){…

在我的例子中,原因是我的定制php错误处理程序(继承人) 类(yii\base\ErrorHandler)未检查 需要根据错误报告()处理错误类型

自定义处理程序总是获取每个错误,甚至被错误控制运算符(@)禁用

error_reporting()设置将不起作用,并且将调用错误处理程序


哇,我从来没听说过,谢谢你的建议,我得到了这个:ini_get('scream.enabled'):FALSE…所以这似乎是另外一回事,可能是因为我使用了error_get_last(),它可以捕获被@Bobs Try print
phpinfo()忽略的警告
并搜索错误设置的非默认值。是的,我刚刚检查过,error\u get\u last()捕获了所有内容。因此,Yii不是这里的问题谢谢,我找到了“问题”实际上,我使用的是error\u get\u last()发送到我们的Slack频道,它也收到了警告。我不知道现在该做什么,因为我不能删除我的问题,因为已经发布了答案