CakePHP 2.0 - Cake не удалось записать в кэш файлов - PullRequest
17 голосов
/ 28 сентября 2011

Я использую CakePHP 2.0 RC-1. После проверки проекта из SVN приложение начинает жаловаться, что не может записать файлы кэша в каталог tmp / cache. Так как это локально, я знаю, что каталог доступен для записи, и я Ясно вижу, что каталоги даже заполнены файлами, поэтому ошибка немного странная.

Вот некоторые ошибки, с которыми я столкнулся:

_cake_core_ cache was unable to write 'cake_dev_nb' to File cache

fopen(c:\cake\app\tmp\cache\models\cake_model_default_media) [function.fopen]: failed to open stream: No error [CORE\Cake\Cache\Engine\FileEngine.php, line 127]

Нет ошибок ?! Wth

Теперь, если я загляну в файл FileEngine, в строке 127 будет написано:

if (!$handle = fopen($this->_File->getPathName(), 'c')) {
            return false;
}

Заменив "c" на "w", ошибки не возникнут, и все будет работать как надо. Но не нужно изменять базовые библиотеки Cake, чтобы обойти эту проблему. Позвольте мне повторить, что на моем другом компьютере это работает как задумано, без редактирования основной библиотеки. Оба используют ОС Windows, и права на чтение / запись для папки tmp / cache-абсолютно одинаковы.

Редактировать: Вот сайт, который выводит сообщения об ошибках у меня локально

Пример сайта, найденного Googling. Не мой сайт: http://www.12h30.net/credit/

Есть предложения?

Обновление: вот почему: Это вызвано тем, что у вас слишком низкая версия PHP до 5.2.6, как указано в комментариях «api55». Спасибо за ответ. Надеюсь, это вам тоже поможет.

Ответы [ 4 ]

24 голосов
/ 05 июля 2012

Ну, в моем случае, когда я проверял свое приложение, в нем не было папки /tmp. Затем я создал структуру (/tmp/cache/models, /tmp/cache/persistent) и все работало хорошо. Это случилось со мной, может быть, git игнорирует пустые папки, поэтому они не были созданы.

17 голосов
/ 24 ноября 2012

У меня была похожая проблема, потому что я добавил cho -R www в каталог app / tmp, чтобы Cake работал «правильно», не предоставляя всем права на запись.Похоже, что во время разработки единственный способ использовать консоль и Интернет - дать каждому право на запись или, возможно, добавить себя в группу www.

Простое решение:

chmod -R 777 app / tmp

или

chown -R username app /tmp

при использовании консоли и

chown -R www app / tmp

при использовании сети

2 голосов
/ 06 октября 2011

Просто дайте право CHMOD (776 у меня отлично работает) на app/tmp

0 голосов
/ 25 ноября 2013

для пользователей Windows с той же ошибкой / предупреждением: убедитесь, что вы запускаете командную строку в режиме повышенных прав;)

...