在我们将所有旧版 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-common
php7.2-common
- 禁用
phpsessionclean.service
并phpsessionclean.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