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
結論
debian の php-apcu のモジュールでは apc.enabled = 1
が欠損している。
debian 系の php-mods のインストールには気をつけろ。
今回は少し古いdebianとphpでメンテナンスをしていたので、最新版では治ってるかもしれないが。十分に気をつける必要がある。
nextcloud でまた起きた(2022-05-12)
debian をbullseyeにアップデートしたら、このエラーが再現して、nextcloud が死んだ
Internal Server Error The server encountered an internal error and was unable to complete your request. Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report. More details can be found in the server log.
と php-fpm がエラーになり、nginxが500を返すようになった。
sudo apt install php8.0 php8.0-fpm \ php8.0-apcu \ php8.0-xsl \ php8.0-zip \ php8.0-mbstring \ php8.0-curl \ php8.0-gd \ php8.0-imagick \ php8.0-sqlite3 \ php8.0-redis \ php8.0-mysql \ php8.0-intl \ php8.0-mcrypt \ php8.0-memcache \ php8.0-bcmath \ php8.0-gmp \ libmagickcore-6.q16-6-extra \
をして、phpenmodをした
phpenmod -v 8.0 apcu
これで生き返ったと思う。