Php Symfony 4-未能保存数组类型的键…touch():Utime失败:不允许操作

Php Symfony 4-未能保存数组类型的键…touch():Utime失败:不允许操作,php,symfony,caching,Php,Symfony,Caching,我在运行Symfony 4.3.2的网页上发现此错误 Failed to save key "xxxx" of type array: touch(): Utime failed: Operation not permitted 但我不知道它来自哪里,所以如果有人有一点线索,我就是买家。 我不知道它是否有帮助,但我在Windows10上使用ubuntu [2019-07-26 16:04:09] php.DEBUG: Warning: chmod(): Operation not permit

我在运行Symfony 4.3.2的网页上发现此错误

Failed to save key "xxxx" of type array: touch(): Utime failed: Operation not permitted
但我不知道它来自哪里,所以如果有人有一点线索,我就是买家。 我不知道它是否有帮助,但我在Windows10上使用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()
方法调用unix时间戳为0的
touch()
函数强制使缓存内容过期。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;
}
通过立即使缓存内容过期,但不使用无效的文件系统时间戳,这将实现几乎相同的结果


或者,更改文件系统类型。

看起来非常相似是的,但答案不太适合我的情况,如果有人有相关的解决方案,欢迎!你在用流浪汉吗?“我在Windows10上用ubuntu”没有流浪汉,你有没有找到解决办法?