Я использую виртуальную машину Ubuntu 16.04 LTS с настройкой LAMP, на которой установлен PHP 7.0. Когда я запускаю свой код, я получаю следующую ошибку: Class 'APCIterator' not found
,
Я убедился, что у меня установлен и включен APCu:
$ sudo apt-get install php-apcu // install package
$ sudo phpenmod apcu // enable it
Могу ли я что-нибудь сделать, чтобы решить эту проблему (без редактирования кода PHP), или я должен просто переключиться обратно на Ubuntu 14 LTS и использовать PHP 5?
PHP 7 убрал обратную совместимость с API APC. Если вы не используете уровень обратной совместимости, теперь класс называется 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
берет шаблон, по которому итерировать.
Других решений пока нет …