UndefinedFunctionException - 尝试从命名空间"Doctrine\Common\Cache"调用函数"apc_fetch"

duf*_*fte 6 php symfony apcu

我想跑

app/console doctrine:schema:create --dump-sql
Run Code Online (Sandbox Code Playgroud)

在Ubuntu 16.04上使用Symfony 2.7和PHP7.上面的命令会引发以下错误:

[Symfony的\元器件\调试\异常\ UndefinedFunctionException]

尝试从命名空间"Doctrine\Common\Cache"调用函数"apc_fetch".

以下帖子列出了类似的问题 - 没有可行的解决方案(从我的角度来看)

我已php-apcu安装,php -m输出:

[PHP Modules]
apcu
calendar
Core
ctype
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zlib

[Zend Modules]
Zend OPcache
Run Code Online (Sandbox Code Playgroud)

输出 php -r 'phpinfo();' |grep apc是:

/etc/php/7.0/cli/conf.d/20-apcu.ini,
apcu
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
Run Code Online (Sandbox Code Playgroud)

所以我的结论是 - 加载了APCU模块,但我仍然得到UndefinedFunctionException.

感谢帮助

小智 10

apc_fetch()是现已弃用的apc模块中的一个函数.要在php7上使用apcu,请使用pecl安装apcu_bc包.

http://pecl.php.net/package/apcu_bc

另外,添加该行

extension=apc.so
Run Code Online (Sandbox Code Playgroud)

到你的php.ini(或你的apcu.ini).这将提供与apc模块的向后兼容性.

  • 谢谢 - 这解决了问题。通过`sudo pecl install pecl/apcu_bc-1.0.3`安装 (2认同)