报错内容
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.
说明
在添加了redis和apcu缓存之后,提示错误。我奇怪的是,这个是从原来nextlcoud复制过来的,而在那端是可用的。一度怀疑是redis出错,因为我重装nextcloud使用了相同的ip。
通过移除config的配置,保留redis是可用的,而出现apcu是有故障的。大概说下,如果有这个错误,基本还是和这几个缓存有关。看看自己使用的缓存,有没有安装对应的软件包,例如php-redis、php-apcu、php-memcache等
解决它
我本处是acpu出错,模式是安装了的。问题就出现没有在web选择正确的后台任务。详见:nextcloud系列:未配置内存缓存暨APCu安装
官方提到:APCu(Alternative PHP Cache)是 PHP 的内存缓存扩展,用于加速应用程序,但默认情况下,它在 CLI(命令行)模式下是禁用的。这意味着如果你运行 Nextcloud 的定时任务(Cron Jobs) 时,APCu 可能无法正确存储和读取缓存数据,导致性能下降甚至任务失败。
在 Web 请求 环境中,APCu 作用于 单个 PHP 进程,缓存数据存储在内存中,并且每个请求都能访问相同的缓存。
在 CLI(命令行)模式 下,每次运行 php 命令都会启动一个新的进程,缓存数据不会在进程之间共享,因此 APCu 在 CLI 模式下默认被禁用。但 Nextcloud 的 cron.php 任务会使用 APCu 进行缓存,如果 APCu 在 CLI 下禁用,可能会导致 计划任务异常。
正确启用方式
有两种方式启用 apc.enable_cli=1
一是全局修改 php.ini。使用apc.enable_cli=1,但记得提前调整cron后台任务
二是只针对 Nextcloud 的 Cron 任务启用。
php -d apc.enable_cli=1 /var/www/nextcloud/cron.php 或者 */5 * * * * php -d apc.enable_cli=1 /var/www/nextcloud/cron.php
重启服务
systemctl restart nginx php8.2-fpm