“phpsessionclean” systemd 服务无法在 Ubuntu 18.04 上运行(从 Ubuntu 14.04 更新后)

“phpsessionclean” systemd 服务无法在 Ubuntu 18.04 上运行(从 Ubuntu 14.04 更新后)

在我们将所有旧版 Ubuntu 14 服务器更新到 Ubuntu 18 后,PHP 会话文件停止清理。我不确定这是由升级本身引起的,但我们所有其他服务器,无论是作为 Ubuntu 18 创建的,还是从 Ubuntu 16 升级的,都按预期运行。

问题是systemd服务phpsessionclean运行失败。这是它给出的错误,在所有服务器上都一样:

systemd[22064]: phpsessionclean.service: Failed to set up mount namespacing: No such file or directory
systemd[22064]: phpsessionclean.service: Failed at step NAMESPACE spawning /usr/lib/php/sessionclean: No such file or directory

/usr/lib/php/sessionclean脚本确实存在,并且我没有发现它的权限有任何异常。

我们使用的是 PHP7.2易于ppa:ondrej/php

我已尝试过:

  • 强制重新安装php7.2,,php-commonphp7.2-common
  • 禁用phpsessionclean.servicephpsessionclean.timer移除systemd并通过 apt 重新安装重新创建它们,并从运行正常的服务器手动复制它们
  • 删除并重新安装/usr/lib/php/sessionclean脚本

目前我不知道还能尝试什么/在哪里查找。还没有找到任何有类似问题的人。但是从 Ubuntu 14 升级的所有服务器都存在这种行为。

我正在考虑的解决方法:

删除systemd服务并更改/etc/cron.d/php

09,39 *     * * *     root   [ -x /usr/lib/php/sessionclean ] && if [ ! -d /run/systemd/system ]; then /usr/lib/php/sessionclean; fi

到:

09,39 *     * * *     root   if [ -x /usr/lib/php/sessionclean ]; then /usr/lib/php/sessionclean; fi

...并使用 cron 任务清除会话(目前尚未清除,因为 systemd 检查失败)。

但我很好奇为什么安装的服务无法运行。谢谢!

答案1

systemctl 编辑 phpsessionclean.service

[Service]
PrivateTmp=false
NoNewPrivileges=yes
ProtectHome=false
ProtectSystem=false

相关内容