TYPO3 Console扩展报错:未检测到APCu模块
你遇到的问题核心原因很明确:Ubuntu系统中,Apache使用的PHP配置和CLI模式下的PHP配置是完全独立的。你在Apache对应的php.ini里配置了APCu,但CLI模式根本没用到这个配置文件,而且APCu默认在CLI环境下是禁用的,这两个因素加起来就导致了报错。
下面是具体的解决步骤:
第一步:找到CLI版PHP的配置文件路径
执行这条命令查看CLI PHP加载的配置文件:php --ini输出里的
Loaded Configuration File字段就是你要找的路径,比如可能是/etc/php/7.0/cli/php.ini(具体路径取决于你的PHP版本,TYPO3 8.x通常对应PHP 7.0~7.2)。第二步:修改CLI的PHP配置
用编辑器打开这个配置文件(需要sudo权限),比如:sudo nano /etc/php/7.0/cli/php.ini在文件中添加或修改以下两行:
extension=apcu.so apc.enable_cli=1注意:如果
extension=apcu.so已经存在但被注释(前面有;),去掉注释即可;apc.enable_cli=1是必须的,因为APCu默认在CLI模式下是关闭的。第三步:验证APCu是否在CLI中加载成功
执行php -m,现在应该能看到apcu出现在模块列表里;或者执行:php -r "var_dump(extension_loaded('apcu'));"如果返回
bool(true),就说明配置生效了。第四步:重新执行TYPO3 Console命令
现在再运行:./vendor/bin/typo3cms extension:activate realurl应该就不会再出现APCu相关的错误了。
补充说明一下:Ubuntu把PHP的不同SAPI(服务器API)分开配置,apache2和cli各自有独立的配置目录,所以修改Apache的php.ini不会影响CLI环境。另外,APCu设计上默认禁用CLI模式是因为CLI进程是短生命周期的,缓存无法复用,但TYPO3 Console需要它来处理缓存操作,所以必须手动开启apc.enable_cli=1。
内容的提问来源于stack exchange,提问作者explorer

