2017-02-09 22 views
0

Так я получаю эту известную ошибку при попытке запустить скрипт (через браузер работает без проблем)Невозможно использовать кэш-Арс в CakePHP оболочки

Fatal error: Uncaught CacheException: Cache engine "default" is not properly configured.

по умолчанию указывает на Apc кэш.

Cache::config('default', array(
    'engine' => 'Apc', 
    'prefix' => 'some_default', 
    'duration' => '+1 hour' 
)); 

Стек след:

#0 /.../lib/Cake/Cache/Cache.php(151): Cache::_buildEngine('default') 
#1 /.../app/Config/core.php(381): Cache::config('default', Array) 
#2 /.../lib/Cake/Core/Configure.php(72): include('/home/...') 
#3 /.../lib/Cake/bootstrap.php(432): Configure::bootstrap(true) 
#4 /.../lib/Cake/Console/ShellDispatcher.php(145): require('/home/...') 
#5 /.../lib/Cake/Console/ShellDispatcher.php(100): ShellDispatcher->_bootstrap() 
#6 /.../lib/Cake/Console/ShellDispatcher.php(54): ShellDispatcher->_initEnvironment() 
#7 /home/ in /.../lib/Cake/Cache/Cache.php on line 186 

Окружающая среда:

Apache/2.4.18 (Ubuntu) 
PHP 7.0.13-0ubuntu0.16.04.1 (cli) 
CakePHP v2.8.0 

PHP -i | Grep АРС:

apc.coredump_unmap => Off => Off 
apc.enable_cli => On => On 
apc.enabled => On => On 
apc.entries_hint => 4096 => 4096 
apc.gc_ttl => 3600 => 3600 
apc.mmap_file_mask => no value => no value 
apc.preload_path => no value => no value 
apc.serializer => php => php 
apc.shm_segments => 1 => 1 
apc.shm_size => 32M => 32M 
apc.slam_defense => On => On 
apc.smart => 0 => 0 
apc.ttl => 0 => 0 
apc.use_request_time => On => On 
apc.writable => /tmp => /tmp 

торта tmp папку - разрешения 777 принадлежащих www-data пользователя (которые работают апач также) tmp содержит /cache, tmp/cache/models, tmp/cache/persistent и tmp/logs с тем же разрешением, как tmp.

Если я меняю двигатель по умолчанию от Apc до Redis, то, например, все работает без проблем.

+0

Я стараюсь быть как можно более конкретным, если вы знаете, что больше информации может помочь решить этот вопрос, пожалуйста, оставьте комментарий – Sojtin

+0

Вы уверены, что вы установили ** [APC] (http://php.net/manual/en/book.apc.php) **, а не ** [APCu] (http://php.net/manual/en/book.apcu.php)**? Последний поддерживается только с CakePHP 2.8.5. – ndm

+0

@ndm ДА, у меня установлен APCu, но почему он работает в браузере, но не с оболочкой? – Sojtin

ответ

0

Apc для php7.0 является устаревшим, поэтому вам нужно установить apcu и чем apcu-bc - для совместимости с apc.

Может быть, только в моем случае, но когда я ставлю в .../cli/php.ini эти строки

extension=apcu.so 
extension=apc.so 

apcu.enabled=1 
apc.enable_cli=1 

Арс до сих пор не работает, я получил предупреждение:

default cache was unable to write 'key' to Apc cache

Это начинают работать, когда я создать два файла

.../cli/config.d/apcu.ini, который содержит:

extension=apcu.so 

и .../cli/config.d/z_apc.ini, который содержит:

extension=apc.so 
apc.enable_cli=1 

(z префикс для того, АРС должны быть загружены после apcu)