2016-05-23 2 views
1

Je cours une machine virtuelle Ubuntu 16.04 LTS avec une installation LAMP, qui a PHP 7.0 installé. Lorsque j'exécute mon code, j'obtiens l'erreur suivante: Class 'APCIterator' not found.Classe APCIterator introuvable pour PHP7

Je me suis assuré que j'ai UCPA installé et activé:

$ sudo apt-get install php-apcu // install package 
$ sudo phpenmod apcu // enable it 

Est-ce que je pouvais faire pour résoudre ce problème (sans modifier le code PHP), ou devrais-je passer simplement revenir à Ubuntu 14 LTS et utilise PHP 5?

+0

voir [this] (http://stackoverflow.com/questions/34170434/how-install-apcu-as-php7-extension-on-debian) answer – DevDonkey

+0

@DevDonkey J'ai essayé cela et APCu a été installé correctement , mais je pense que j'ai besoin du support d'APC (que je considère comme obsolète depuis PHP7). L'erreur 'Class 'APCIterator' not found' reste. – JasonK

Répondre

2

PHP 7 a supprimé la rétrocompatibilité avec l'API APC. À moins que vous utilisez un backwards compatibility layer, la classe est maintenant appelé APCUIterator:

$ php -d 'apc.enable_cli=1' -d 'apc.enabled=1' -a 
Interactive shell 

php > var_dump(ini_get('apc.enabled')); 
string(1) "1" 
php > var_dump(ini_get('apc.enable_cli')); 
string(1) "1" 
php > var_dump(function_exists('apcu_fetch')); 
bool(true) 
php > var_dump(extension_loaded('apcu')); 
bool(true) 
php > var_dump(class_exists('\APCIterator')); 
bool(false) 
php > var_dump(class_exists('\APCUIterator')); 
bool(true) 

Notez que l'API entre les classes a changé: le constructeur \APCIterator a pris le cache à itérer, tandis que le \APCUIterator prend un motif sur lequel répéter.