phpenv 默认不启用 apcu,需手动在对应版本 php.ini 中添加 extension=php_apcu.dll 等配置并彻底重启服务;cli 模式下 apcu 缓存不跨进程持久,仅 fastcgi 进程级有效。

phpEnv 默认不启用 APCu,必须手动修改配置并重启服务才能生效;直接改 php.ini 但没重启 php-cgi 或 php-fpm 进程,apcu_enabled() 仍会返回 false。
确认 phpEnv 当前 PHP 版本和扩展目录
phpEnv 是 Windows 下的多版本 PHP 环境管理工具,不同 PHP 版本对应独立的 php.ini 和扩展路径。先定位你正在用的版本:
- 打开 phpEnv 控制面板 → 查看「当前运行」的 PHP 版本(如
php-8.1.23) - 对应配置文件路径通常是:
C:\phpenv\versions\php-8.1.23\php.ini - 扩展 DLL 文件默认放在:
C:\phpenv\versions\php-8.1.23\ext\,确认该目录下存在php_apcu.dll
在 php.ini 中启用 APCu 并设关键参数
用记事本或 VS Code 打开对应版本的 php.ini,在 [ExtensionList] 区域之后(或文件末尾)添加以下几行:
extension=php_apcu.dll apc.enabled=1 apc.shm_size=64M apc.ttl=3600 apc.enable_cli=1
注意:
-
extension=php_apcu.dll必须写全名,不能写成extension=apcu(Windows 下不识别) -
apc.shm_size建议设为64M起步,小项目32M也够,但低于16M容易触发缓存淘汰 -
apc.enable_cli=1开启后,命令行脚本(如php artisan cache:clear)也能用apcu_*函数 - 不要删掉原有
opcache配置 —— APCu 和 OPcache 互不冲突,可共存
重启 phpEnv 的 Web 服务进程
phpEnv 的 Apache/Nginx 是调用 PHP-CGI 或 PHP-FPM 子进程提供服务,改完 php.ini 后必须彻底重启:
- 在 phpEnv 控制面板中点击「Stop All」→ 等状态变灰 → 再点「Start All」
- 或者右键托盘图标 → 「Restart Apache」或「Restart Nginx」
- 切勿只刷新浏览器或重载页面 —— PHP 进程未重启,
apcu_store()会静默失败,apcu_cache_info()返回空数组
验证是否生效:新建 info.php 放入 Web 根目录,内容为 <?php phpinfo(); ?>,访问后搜索 apcu,看到「APCu Support enabled」即成功。
PHP CLI 模式下 apcu_store 不持久?这是正常行为
在 phpEnv 的命令行中执行 php test.php,即使开了 apc.enable_cli=1,apcu_store() 写入的数据也不会跨进程保留:
- 每次
php xxx.php都是新进程,共享内存段只在该进程生命周期内有效 - Web 请求(Apache/Nginx + PHP-CGI)才真正复用同一组共享内存段,适合做请求间缓存
- 别用 CLI 测试「缓存是否留存」,那是误解设计目标 —— APCu 的用户缓存本质是「FastCGI 进程级」,不是「全局持久化」
真正容易被忽略的是:如果你用 phpEnv 搭配 Nginx + PHP-FPM,还要额外检查 php-fpm.conf 或 pool 配置里是否禁用了 apc 相关指令(极少见,但某些自定义模板会加 php_admin_flag[apc.enabled] = off)。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











