Как исправить «touch (): Utime failed: Операция не разрешена» при сохранении кеша с помощью symfony? - PullRequest
1 голос
/ 24 апреля 2019

Я хочу кешировать какой-нибудь ответ с помощью symfony \ cache.Но у меня есть некоторые ошибки с моим кешем и иногда с кешем Symfony по умолчанию.

Конфигурация:

Debian 9 на vagrant (с ссылкой vagrant bindfs на каталог исходного кода) с Apache2
php 7.2 / symfony 4.1
apcu enabled

Для кэширования моего ответа я использую FilesystemAdapter с dir {projectDir} / var / cache / {env} / api-cache и пространством имен app.cache

var / cache /

drwxrwxrwx 24 vagrant www-data 768 Apr 24 09:09 dev/
drwxrwxrwx 13 vagrant www-data 416 Apr 18 16:02 test/

var / cache / dev /

-rw-rw-rw-   1 vagrant www-data  165 Apr 24 09:09 annotations.map
-rw-rw-rw-   1 vagrant www-data  12K Apr 24 09:09 annotations.php
drwxrwxrwx   3 vagrant www-data   96 Apr 23 17:47 api-cache/
drwxrwxrwx 399 vagrant www-data  13K Apr 23 17:46 ContainerBrT4sD3/
-rw-rw-rw-   1 vagrant www-data    0 Apr 24 09:07 ContainerBrT4sD3.legacy
drwxrwxrwx 404 vagrant www-data  13K Apr 24 09:09 ContainerSaE63B9/
drwxrwxrwx   3 vagrant www-data   96 Apr 23 17:46 doctrine/
drwxrwxrwx   6 vagrant www-data  192 Apr 23 17:47 jms_serializer/
drwxrwxrwx   5 vagrant www-data  160 Apr 24 09:07 pools/
-rw-rw-rw-   1 vagrant www-data 220K Apr 24 09:09 srcDevDebugProjectContainerCompiler.log
-rw-rw-rw-   1 vagrant www-data 1.1K Apr 24 09:09 srcDevDebugProjectContainerDeprecations.log
-rw-rw-rw-   1 vagrant www-data  767 Apr 24 09:09 srcDevDebugProjectContainer.php
-rw-rw-rw-   1 vagrant www-data  58K Apr 24 09:09 srcDevDebugProjectContainer.php.meta
-rw-rw-rw-   1 vagrant www-data  49K Apr 23 17:46 srcDevDebugProjectContainerUrlGenerator.php
-rw-rw-rw-   1 vagrant www-data 5.4K Apr 23 17:46 srcDevDebugProjectContainerUrlGenerator.php.meta
-rw-rw-rw-   1 vagrant www-data  78K Apr 23 17:46 srcDevDebugProjectContainerUrlMatcher.php
-rw-rw-rw-   1 vagrant www-data 5.4K Apr 23 17:46 srcDevDebugProjectContainerUrlMatcher.php.meta
-rw-rw-rw-   1 vagrant www-data 519K Apr 24 09:09 srcDevDebugProjectContainer.xml
-rw-rw-rw-   1 vagrant www-data  58K Apr 24 09:09 srcDevDebugProjectContainer.xml.meta
drwxrwxrwx 108 vagrant www-data 3.4K Apr 23 17:46 translations/
drwxrwxrwx 142 vagrant www-data 4.5K Apr 24 09:09 twig/
-rw-rw-rw-   1 vagrant www-data   91 Apr 24 09:09 validation.php

Журнал для кода Symfony по умолчанию:

 cache.WARNING: Failed to save key "%5B%5BC%5DApp%5CEntity%5CReport%5CReportItem%24hasBeenPushed%5D%5B1%5D" (integer) {"key":"%5B%5BC%5DApp%5CEntity%5CReport%5CReportItem%24hasBeenPushed%5D%5B1%5D","type":"integer","exception":"[object] (ErrorException(code: 0): touch(): Utime failed: Operation not permitted at /vagrant-bindfs/vendor/symfony/cache/Traits/FilesystemCommonTrait.php:90)"} []

Журналы с моим кодом:

php.DEBUG: User Warning: Failed to save key "my_tag" (string) {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\SilencedErrorContext: {\"severity\":512,\"file\":\"/vagrant-bindfs/vendor/symfony/cache/CacheItem.php\",\"line\":184,\"trace\":[{\"file\":\"/vagrant-bindfs/vendor/symfony/cache/Adapter/AbstractAdapter.php\",\"line\":242,\"function\":\"log\",\"class\":\"Symfony\\\\Component\\\\Cache\\\\CacheItem\",\"type\":\"::\"}],\"count\":1})"} []
app.ERROR: Cache not save : my_tag [] []

Когда я регистрирую некоторую информацию об исключении в Symfony \ Component \ Cache \ Adapter \ AbstractAdapter-> commit (), я получаю это: ErrorException touch(): Utime failed: Operation not permitted

Я уже ищурешение, но ничего не работает.Я думаю, что это проблема с правами на каталоги кеша и, возможно, проблема с vagrant и vagrant-binfs, но я не понимаю этого.

Что я могу сделать / проверить, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 21 июня 2019

У меня была такая же проблема.

Все, что вам нужно сделать, это изменить тип synced_folder на nfs, но эта опция работает только с хостами Mac.

Чтобы использовать его в Windows, вам необходимо установить vagrant-winnfsd

$ vagrant plugin install vagrant-winnfsd

Затем измените тип синхронизации в вашем Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.synced_folder "../project", "/var/www", type: "nfs"
end

В документации сказано, что также необходимо изменить тип сети на dhcp, но мне не нужно было делать это для решения моей проблемы.

config.vm.network "private_network", type: "dhcp"

Надеюсь, это помогло

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...