php - Symfony 4 - 无法保存密钥...类型数组:触摸():Utime失败:不允许操作
问题描述
我在使用 Symfony 4.3.2 运行的网页上发现此错误
Failed to save key "xxxx" of type array: touch(): Utime failed: Operation not permitted
但我不知道它来自哪里,所以如果有人有一点线索,我就是买家。我不知道它是否有帮助,但我在 Windows 10 上使用 ubuntu
[2019-07-26 16:04:09] php.DEBUG: Warning: chmod(): Operation not permitted {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\SilencedErrorContext: {\"severity\":2,\"file\":\"/devdir/myProject/vendor/symfony/filesystem/Filesystem.php\",\"line\":696,\"trace\":[{\"file\":\"/devdir/myProject/vendor/symfony/config/ResourceCheckerConfigCache.php\",\"line\":124,\"function\":\"dumpFile\",\"class\":\"Symfony\\\\Component\\\\Filesystem\\\\Filesystem\",\"type\":\"->\"}],\"count\":1})"} []
[2019-07-26 16:04:09] php.DEBUG: Warning: chmod(): Operation not permitted {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\SilencedErrorContext: {\"severity\":2,\"file\":\"/devdir/myProject/vendor/symfony/filesystem/Filesystem.php\",\"line\":202,\"trace\":[{\"file\":\"/devdir/myProject/vendor/symfony/config/ResourceCheckerConfigCache.php\",\"line\":126,\"function\":\"chmod\",\"class\":\"Symfony\\\\Component\\\\Filesystem\\\\Filesystem\",\"type\":\"->\"}],\"count\":1})"} []
[2019-07-26 16:04:09] request.INFO: Matched route "fos_js_routing_js". {"route":"fos_js_routing_js","route_parameters":{"_route":"fos_js_routing_js","_controller":"fos_js_routing.controller::indexAction","_format":"js"},"request_uri":"http://myProject.local/js/routing?callback=fos.Router.setData","method":"GET"} []
[2019-07-26 16:04:09] cache.WARNING: Failed to save key "%5BFOS%5CJsRoutingBundle%5CController%5CController%5D%5B1%5D" of type array: touch(): Utime failed: Operation not permitted {"key":"%5BFOS%5CJsRoutingBundle%5CController%5CController%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:09] cache.WARNING: Failed to save key "%5B%5BC%5DFOS%5CJsRoutingBundle%5CController%5CController%5D%5B1%5D" of type integer: touch(): Utime failed: Operation not permitted {"key":"%5B%5BC%5DFOS%5CJsRoutingBundle%5CController%5CController%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:09] cache.WARNING: Failed to save key "%5BFOS%5CJsRoutingBundle%5CController%5CController%23indexAction%5D%5B1%5D" of type array: touch(): Utime failed: Operation not permitted {"key":"%5BFOS%5CJsRoutingBundle%5CController%5CController%23indexAction%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:09] cache.WARNING: Failed to save key "%5B%5BC%5DFOS%5CJsRoutingBundle%5CController%5CController%23indexAction%5D%5B1%5D" of type integer: touch(): Utime failed: Operation not permitted {"key":"%5B%5BC%5DFOS%5CJsRoutingBundle%5CController%5CController%23indexAction%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:20] request.INFO: Matched route "fos_js_routing_js". {"route":"fos_js_routing_js","route_parameters":{"_route":"fos_js_routing_js","_controller":"fos_js_routing.controller::indexAction","_format":"js"},"request_uri":"http://myProject.local/js/routing?callback=fos.Router.setData","method":"GET"} []
[2019-07-26 16:04:21] cache.WARNING: Failed to save key "%5BFOS%5CJsRoutingBundle%5CController%5CController%5D%5B1%5D" of type array: touch(): Utime failed: Operation not permitted {"key":"%5BFOS%5CJsRoutingBundle%5CController%5CController%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:21] cache.WARNING: Failed to save key "%5B%5BC%5DFOS%5CJsRoutingBundle%5CController%5CController%5D%5B1%5D" of type integer: touch(): Utime failed: Operation not permitted {"key":"%5B%5BC%5DFOS%5CJsRoutingBundle%5CController%5CController%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:21] cache.WARNING: Failed to save key "%5BFOS%5CJsRoutingBundle%5CController%5CController%23indexAction%5D%5B1%5D" of type array: touch(): Utime failed: Operation not permitted {"key":"%5BFOS%5CJsRoutingBundle%5CController%5CController%23indexAction%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:21] cache.WARNING: Failed to save key "%5B%5BC%5DFOS%5CJsRoutingBundle%5CController%5CController%23indexAction%5D%5B1%5D" of type integer: touch(): Utime failed: Operation not permitted {"key":"%5B%5BC%5DFOS%5CJsRoutingBundle%5CController%5CController%23indexAction%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:21] request.INFO: Matched route "_wdt". {"route":"_wdt","route_parameters":{"_route":"_wdt","_controller":"web_profiler.controller.profiler::toolbarAction","token":"a0f28c"},"request_uri":"http://myProject.local/_wdt/a0f28c","method":"GET"} []
[2019-07-26 16:04:21] cache.WARNING: Failed to save key "%5BSymfony%5CBundle%5CWebProfilerBundle%5CController%5CProfilerController%5D%5B1%5D" of type array: touch(): Utime failed: Operation not permitted {"key":"%5BSymfony%5CBundle%5CWebProfilerBundle%5CController%5CProfilerController%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:21] cache.WARNING: Failed to save key "%5B%5BC%5DSymfony%5CBundle%5CWebProfilerBundle%5CController%5CProfilerController%5D%5B1%5D" of type integer: touch(): Utime failed: Operation not permitted {"key":"%5B%5BC%5DSymfony%5CBundle%5CWebProfilerBundle%5CController%5CProfilerController%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:21] cache.WARNING: Failed to save key "%5BSymfony%5CBundle%5CWebProfilerBundle%5CController%5CProfilerController%23toolbarAction%5D%5B1%5D" of type array: touch(): Utime failed: Operation not permitted {"key":"%5BSymfony%5CBundle%5CWebProfilerBundle%5CController%5CProfilerController%23toolbarAction%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
[2019-07-26 16:04:21] cache.WARNING: Failed to save key "%5B%5BC%5DSymfony%5CBundle%5CWebProfilerBundle%5CController%5CProfilerController%23toolbarAction%5D%5B1%5D" of type integer: touch(): Utime failed: Operation not permitted {"key":"%5B%5BC%5DSymfony%5CBundle%5CWebProfilerBundle%5CController%5CProfilerController%23toolbarAction%5D%5B1%5D","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /devdir/myProject/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:95)"} []
解决方案
如果您碰巧使用 FAT/FAT32 或其他时间戳范围受到严格限制的文件系统,那么该警告是意料之中的。
Symfony 的FilesystemCommonTrait::write()
方法调用touch()
具有 unix 时间戳 0 的函数来强制使缓存内容过期。Unix 时间戳 0 代表 1970-01-01 日期。根据维基百科,在 FAT 文件系统中,允许的时间戳范围是 1980-01-01 到 2099-12-31。所以touch()
函数失败并发出警告。
解决方法是在第 80 行附近修改FilesystemCommonTrait::write()
方法。
查找行:
if (null !== $expiresAt) {
touch($this->tmp, $expiresAt);
}
在这些行之前插入:
if (0 === $expiresAt) {
$expiresAt = time() - 1;
}
这应该通过立即使缓存内容过期来实现几乎相同的结果,但不使用无效的文件系统时间戳。
或者,更改文件系统类型。
推荐阅读
- authentication - 如何进行基本的 http 身份验证(登录和注册)并存储令牌
- python-3.x - 我无法从 python 代码中理解这个形状
- angular - 身份验证服务 - 无法实现
- html - 删除表单内进度元素周围的空格
- reactjs - 使用 React Router 重新加载 Webpack HotModule 渲染与组件
- javascript - 使用 wave 示例的相机位置和设备控制
- python - ubuntu 在哪里找到 python 3.6.8 而不是 2.7?我应该参考哪些信息来理解原理?
- java - 如何在 Spring Boot 中以常规的 intravels 动态填充来自 JSON 文件的数据的列表。[@日程]
- google-apps-script - 在 Pixelbook clasp 登录过程中无法登录 localhost
- database - 如何构建 HDF5 文件的数据库