Uncaught exception 'Zend_Cache_Exception'

Работал себе да работал один мой сайт, который еще не совсем доведен до ума. Сегодня захожу и вижу на главной странице сообщение:
Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/) is not within the allowed path(s): (/home:/tmp) in /home/XXXXXXXXXX/public_html/classes/lib/external/DklabCache/Zend/Cache/Backend/File.php on line 145

Fatal error: Uncaught exception 'Zend_Cache_Exception' with message 'cache_dir must be a directory' in /home/XXXXXXXXXX/public_html/classes/lib/external/DklabCache/Zend/Cache.php:141 Stack trace: #0 /home/XXXXXXXXXX/public_html/classes/lib/external/DklabCache/Zend/Cache/Backend/File.php(146): Zend_Cache::throwException('cache_dir must ...') #1 /home/XXXXXXXXXX/public_html/classes/lib/external/DklabCache/Zend/Cache/Backend/File.php(121): Zend_Cache_Backend_File->setCacheDir('/') #2 /home/XXXXXXXXXX/public_html/classes/modules/sys_cache/Cache.class.php(71): Zend_Cache_Backend_File->__construct(Array) #3 /home/XXXXXXXXXX/public_html/classes/engine/Engine.class.php(68): Cache->Init() #4 /home/XXXXXXXXXX/public_html/classes/engine/Router.class.php(95): Engine->InitModules() #5 /home/XXXXXXXXXX/public_html/index.php(31): Router->Exec() #6 {main} thrown in /home/XXXXXXXXXX/public_html/classes/lib/external/DklabCache/Zend/Cache.php on line 141

11 комментариев

avatar
проверь путь до каталога кеширования
  • ort
  • 0
avatar

Да вроде все нормально. Если конечно я все пути проверил…
/public_html/templates/cache/           777
/public_html/templates/compiled/        777

Интересно то, что сайт работал и я к нему даже не прикосался.
Максим, подскажите пожалуйста как починить?
avatar
я про путь в конфиге SYS_CACHE_DIR
avatar
если не прикасались и началась такая штука, то скорее всего хостер ввел ограничение open_basedir в php.
побдерите каталогам более подходящее место.
avatar
Решение проблемы найдено. Всем спасибо за ответы.

Решение:
1. Создаем папку cache в корне сайта;
2. Открываем /config/config.php, ищем:
define('SYS_CACHE_DIR',$sTmpDir.'/'); // каталог для файлового кеша, также используется для временных картинок. По умолчанию подставляем каталог для хранения сессий

и заменяем на:
define('SYS_CACHE_DIR',DIR_SERVER_ROOT.'/cache'); // каталог для файлового кеша, также используется для временных картинок. По умолчанию подставляем каталог для хранения сессий
avatar
не нужно забывать, что к каталогу с кешем в целях безопасности должен быть запрещен доступ по http
avatar
подскажи пожалуйста как это сделать?
avatar
Присоединяюсь к вопросу Screenager'а… А как это сделать, помоги, пожалуйста)))
avatar
.htaccess:

Options -Indexes
<Directory /path/to/diretcory>
order allow,deny
deny from all


Хотя можно и без <<Directory ...> если htaccess создается в самой папке с кешем
avatar
Парсер лох, извиняюсь:

<Directory /path/to/diretcory>
order allow,deny
deny from all
<Directory>
avatar
Спасибо… И точно, во многих директориях лежит подобный htaccess…
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.