2016-05-23 7 views
1

Я запускаю Ubuntu 16.04 LTS VM с настройкой LAMP, в которой установлен PHP 7.0. Когда я запускаю свой код, я получаю следующую ошибку: Class 'APCIterator' not found.Класс APCIterator не найден для PHP7

Я уверен, что я установил APCu и включен:

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

Что я могу сделать, чтобы решить эту проблему (без редактирования кода PHP), или я должен просто переключиться обратно в Ubuntu 14 LTS и использовать PHP 5?

+0

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

+0

@DevDonkey Я пробовал это, и APCu был установлен правильно , но я думаю, что мне нужна поддержка APC (которая, как я считаю, устарела с PHP7). Ошибка 'Class 'APCIterator' not found' остается. – JasonK

ответ

2

PHP 7 удаленной обратной совместимости с API APC. Если вы не используете backwards compatibility layer, класс теперь называется 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) 

Обратите внимание, что API между классами изменилось: \APCIterator конструктор взял кэш перебрать, в то время как \APCUIterator берет образец, над которой итерацию.