それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

debianのphpでapcuを有効にする。

APCuが有効にならない。

sudo -u www-data php occ
An unhandled exception has been thrown:
OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)

清く正しくdebian提供の、コマンドphpenmodでモジュールを有効にする。

# phpenmod apc

apc のモジュールはロードされている。

ls -l /etc/php/*/*/*apc*
-rw-r--r-- 1 root root  31 Nov  4  2018 /etc/php/7.3/mods-available/apcu_bc.ini
-rw-r--r-- 1 root root 109 Jul  5 15:14 /etc/php/7.3/mods-available/apcu.ini

しかし、有効にならない。

sudo -u www-data php occ
An unhandled exception has been thrown:
OC\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)

php -i で状況を見る。有効にならない・・・

# php -i | grep -i apcu

/etc/php/7.3/cli/conf.d/20-apcu.ini,
/etc/php/7.3/cli/conf.d/25-apcu_bc.ini
APCu Version => 5.1.17
apcu
APCu Support => Disabled
APCu Debugging => Disabled

apc 関連のphp.iniが欠損していると気づく。マジか。

cat <<EOF  >> /etc/php/7.3/cli/conf.d/20-apcu.ini

[apcu]
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php

EOF

APCuが有効になった。

php -i | grep -i apcu
/etc/php/7.3/cli/conf.d/20-apcu.ini,
/etc/php/7.3/cli/conf.d/25-apcu_bc.ini
APCu Version => 5.1.17
apcu
APCu Support => Enabled
APCu Debugging => Disabled

結論

debianphp-apcu のモジュールでは apc.enabled = 1 が欠損している。

debian 系の php-mods のインストールには気をつけろ。

今回は少し古いdebianphpでメンテナンスをしていたので、最新版では治ってるかもしれないが。十分に気をつける必要がある。