如何配置systemd以便PHP可以使用memcached unix套接字?

如何配置systemd以便PHP可以使用memcached unix套接字?

我正在从 Ubuntu Server 16.04 升级到 18.04,同时从 PHP 5.6 升级到 PHP 7。

我在其中/etc/memcached.conf添加了:

-s /tmp/memcached.sock
-a 666

当我重新启动服务时,我看到:

srw-rw-rw- 1 memcache memcache 0 Nov 13 03:44 /tmp/systemd-private-7fc3b73707084a93bcc6abd22001eb7e-memcached.service-oIF206/tmp/memcached.sock=

如何配置 systemd 来了解 UNIX 套接字在哪里?

答案1

systemd 有PrivateTmp=truememcached.service

一种方法是重写PrivateTmp,特别是对于memcached.service,即

mkdir -p /etc/systemd/system/memcached.service.d
echo "[Service]" > /etc/systemd/system/memcached.service.d/override.conf
echo "PrivateTmp=false" >> /etc/systemd/system/memcached.service.d/override.conf
systemctl daemon-reload
systemctl restart memcached

这会将 memcached.service 改回 using /tmp,而不是/tmp/systemd-private-...

假设您想使用 memcached 进行会话处理;一旦您验证了该会话/tmp/memcahced.sock具有正确的权限,就可以在/etc/php.ini/etc/php/conf.d/memcached.ini更改会话支持。

[Session]
extension=memcached.so
session.save_handler="memcached"
session.save_path="/tmp/memcached.sock"

如果存在,注释掉session.save_handler=files

相关内容