2016-09-13 3 views
0

У меня есть следующая конфигурация:Фатальная ошибка: Uncaught Zend_Cache_Exception: cache_dir ".../вар/page_cache" не доступен для записи в .../zendframework1/библиотеки/Zend/cache.php на линии 209

CentOS VM x64 с mysql 5.7 и php 7.0.10

Что касается моего веб-сервера, я использую nginx с php-fpm.

Так я установил Magento от мерзавца репо, филиал 2,1, и я получаю эту ошибку:

Fatal error: Uncaught Zend_Cache_Exception: cache_dir "/usr/share/nginx/html/var/page_cache" is not writable in /usr/share/nginx/html/vendor/magento/zendframework1/library/Zend/Cache.php on line 209 

Я попытался изменить владельца Magento каталога/рекурсивно от Nginx к PHP- fpm, то я попытался дать разрешение на каталог page_cache, но ничего не происходит, такая же ошибка, независимо от того, что я пытаюсь.

Единственная причина, по которой я вижу эту ошибку, - это то, что я добавил синтаксис ini_set('display_errors', 1); в основной файл индекса, иначе я просмотрю страницу банка. Изменение режима пурпурного в режим разработчика ничего не делало, чтобы показывать какие-либо ошибки на странице, также переименовывая файл local.xml.sample в local.xml, ничего не показывая в ошибке, с которой я столкнулся.

ответ

1

Я бы начал с ls -lh в вашем кеше и его родительском удостоверении, чтобы убедиться, что у вас есть разрешения 777 на все, что вы думаете.

В противном случае это - за исключением Zend которые вы видите берет начало здесь:

# File: vendor/magento/zendframework1/library/Zend/Cache/Backend/File.php 
public function setCacheDir($value, $trailingSeparator = true) 
{ 
    if (!is_dir($value)) { 
     Zend_Cache::throwException(sprintf('cache_dir "%s" must be a directory', $value)); 
    } 
    if (!is_writable($value)) { 
     Zend_Cache::throwException(sprintf('cache_dir "%s" is not writable', $value)); 
    } 
    if ($trailingSeparator) { 
     // add a trailing DIRECTORY_SEPARATOR if necessary 
     $value = rtrim(realpath($value), '\\/') . DIRECTORY_SEPARATOR; 
    } 
    $this->_options['cache_dir'] = $value; 
} 

Так по какой-либо причине, is_writable функция РНР возвращается false при передаче, что кэш-директорию. Checkout's is_writable's PHP manual entry и проработайте там комментарии для возможных случаев краев. Одна возможность с первого комментария

To Darek and F Dot: About group permissions, there is 
this note in the php.ini file: 

; By default, Safe Mode does a UID compare check when 
; opening files. If you want to relax this to a GID compare, 
; then turn on safe_mode_gid. 
safe_mode_gid = Off
+0

спасибо за ответ, ссылка, которую вы предоставили для 'is_writable', спасла меня :) Мне удалось определить, что происходит. В конечном итоге я даю владельцу и группе php-fpm: nginx весь каталог и все мои проблемы, где это разрешено. –

Смежные вопросы