2017-02-09 4 views
0

Also ich diesen berühmten Fehler erhalten, während versuchen, Shell-Skript ausgeführt werden (durch Browser arbeitet ohne Probleme)kann nicht Apc Cache innerhalb CakePHP verwenden Shell

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

Standard Apc Cache zeigt.

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

Stapelüberwachung:

#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 

Umwelt:

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

php -i | grep apc:

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 

Kuchen tmp Ordner - Berechtigungen 777 im Besitz von www-data Benutzer (die Apache laufen auch) tmp enthält /cache, tmp/cache/models, tmp/cache/persistent und tmp/logs mit der gleichen Berechtigung wie tmp.

Wenn ich zum Beispiel Standard-Engine von Apc zu Redis ändern, funktioniert alles ohne Probleme.

+0

Ich versuche, so genau wie möglich zu sein, wenn Sie wissen, was weitere Informationen lösen helfen könnte Bitte hinterlassen Sie einen Kommentar – Sojtin

+0

Sind Sie sicher, dass Sie ** [APC] (http://php.net/manual/en/book.apc.php) ** und nicht ** [APCu] installiert haben? (http://php.net/manual/en/book.apcu.php))**? Letzteres wird erst ab CakePHP 2.8.5 unterstützt. – ndm

+0

@ndm JA, ich habe APCu installiert, aber warum funktioniert es im Browser, aber nicht mit Shell? – Sojtin

Antwort

0

Apc für php7.0 ist veraltet, so dass Sie apcu müssen installieren und als apcu-bc - für die Kompatibilität mit apc.

Vielleicht ist nur in meinem Fall, aber wenn ich in .../cli/php.ini setzen diese Zeilen

extension=apcu.so 
extension=apc.so 

apcu.enabled=1 
apc.enable_cli=1 

Apc noch nicht arbeiten, ich Warnungen bekam:

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

Es beginnt zu arbeiten, wenn ich zwei Dateien erstellen

.../cli/config.d/apcu.ini, die enthält:

extension=apcu.so 

und .../cli/config.d/z_apc.ini, die enthält:

extension=apc.so 
apc.enable_cli=1 

(z Präfix für Ordnung ist, sollte apc nach APCU geladen werden)