Я разрабатываю сайт CakePHP 2.2 локально с помощью MAMP. Время от времени я получаю одно или несколько предупреждений, подобных этому, о невозможности записи в один или несколько файлов кеша:
Warning: SplFileInfo::openFile(/Applications/MAMP/htdocs/mywebsite/www/app/tmp/cache/persistent/myapp_cake_core_cake_console_en-au): failed to open stream: Permission denied in /Applications/MAMP/htdocs/mywebsite/www/lib/Cake/Cache/Engine/FileEngine.php on line 313
Странно то, что /tmp — это 777, tmp/cache — это 777, а tmp/cache/persistent — это 777 (не волнуйтесь… на сервере не будет 777!). Сам файл внутри tmp/cache/persistent имеет номер 644, но я предполагаю, что Cake создает и управляет этим файлом, и делает это с необходимыми разрешениями.
Если я просто обновлю страницу, ошибка исчезнет (а затем снова появится через некоторое время). Я не делаю никакого явного кэширования, так что все это просто Cake делает то, что он делает автоматически.
Итак, мой вопрос:
а) Как работает это автоматическое кэширование Cake? Пытается ли он писать в этот файл при каждом обновлении страницы и терпит неудачу только время от времени? Или он пытается записать в этот файл только время от времени, но каждый раз терпит неудачу?
б) Если это происходит только время от времени, могу ли я просто игнорировать это? И если он терпит неудачу каждый раз, когда пытается, как я могу это исправить?
Заранее благодарю за любую помощь!
sudo chmod -R 777 app/tmp
, когда я сталкиваюсь с этим. - person Martin Bean   schedule 04.10.2012