apc_store 已安装但 return 值不正确

apc_store installed but does not return correct value

我正在尝试使用 apc_store 来存储一个会不断变化的标记变量,因此需要由一个 php 脚本创建,并由另一个 php 脚本访问。


环境: PHP: 版本 7.3 OS: Ubuntu 18.04

引用如下:

Whosebug: Troubleshooting apc_store

PHP Manual - apc_store


安装过程:

sudo apt-get install php-apcu
sudo apt-get install php-apcu-bc

安装结果:

php-apcu is already the newest version (5.1.18+4.0.11-1+ubuntu18.04.1+deb.sury.org+1).
php-apcu-bc is already the newest version (1.0.5-1+ubuntu18.04.1+deb.sury.org+20191129).

问题

即使我没有收到错误消息,系统 不会 return 预期结果,例如字符串 "abc", 进一步的结果表明 "bool(false)" 应该是 "bool(true)".

问题:

如何显示结果?:

string(3) "abc"

其他测试 我试图将 /etc/php/7.0/mods-available/apcu-ini 更改为

extension=apcu.so
extension=apc.so

...给出错误:

PHP Warning:  Module 'apc' already loaded in Unknown on line 0

我的php脚本:

<?php
$token = "abc";
apc_store('token_1', $token);
var_dump(apc_fetch('token_1'));

结果:

布尔值(假)

预期结果:

字符串(3) "abc"


疑难解答:

正在检查 apc:

结果:

$ php -i | grep apc

/etc/php/7.3/cli/conf.d/20-apcu.ini,
/etc/php/7.3/cli/conf.d/25-apcu_bc.ini
apc
apcu
apc.coredump_unmap => Off => Off
apc.enable_cli => Off => Off
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 => Off => Off
apc.smart => 0 => 0
apc.ttl => 0 => 0
apc.use_request_time => On => On

您需要为 cli 启用 apc。

找出加载了哪个 php.ini 文件:

php -i | grep "Loaded Configuration File"

编辑以上文件并添加:

apc.enable_cli=On

然后重试。

问题更新后编辑:

只需将以上行添加到以下文件中: /etc/php/7.3/cli/conf.d/20-apcu.ini