PHP7找不到APCIterator类

时间:2016-05-23 15:23:02

标签: php apc php-7 ubuntu-16.04 apcu

我正在运行带有LAMP设置的Ubuntu 16.04 LTS VM,它安装了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?

1 个答案:

答案 0 :(得分:3)

PHP 7删除了与APC API的向后兼容性。除非您使用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采用了迭代的模式。