Подтвердить что ты не робот

CakePHP 2.0 - Cake не удалось записать в кеш файлов

Я использую 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 в комментариях. Спасибо за ответ. Надеюсь, это тоже поможет вам.

4b9b3361

Ответ 1

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

Ответ 2

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

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

chmod -R 777 app/tmp

или

chown -R имя пользователя app/tmp

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

chown -R www app/tmp

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

Ответ 3

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

Ответ 4

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