php-fpm 无法访问 unix 套接字

php-fpm 无法访问 unix 套接字

我使用不同的 PHP-FPM 池,每个池都有特定的用户。我刚刚将 memcached 切换为使用套接字而不是 tcp/udp 端口​​(出于多种原因,包括最近对 11211 端口的攻击)。

我已经相应地修改了 systemd 单元文件:

ExecStart=/usr/bin/memcached -s /var/run/memcached/memcached.socket -a 0770 -o modern

使用正确的权限创建套接字:

$ ls -la /var/run/memcached/memcached.socket
srwxrwx--- 1 memcached memcached 0 Jul  5 15:41 /var/run/memcached/memcached.socket

然后我将 php-fpm 池用户纳入 memcached 组,以便 php 可以连接到套接字:

$ gpasswd pooluser memcached

确保它是:

$ groups pooluser
pooluser memcached

最后我配置了 php 脚本:

$memcached->addServer('/var/run/memcached/memcached.socket', 0)

我能想到的唯一原因是 PHP-FPM 正在使用另一个用户建立连接。php 扩展无法访问套接字:

var_dump($memcached->addServer('/var/run/memcached/memcached.socket', 0))
// bool(true)

var_dump($memcached->set('key', 'value')
// bool(false)

如果我将 umask 更改为,0777那么它就可以连接,所以这不是配置问题,而是权限问题。

我正在使用另一个 unix 套接字连接PDO()到 mariadb(mysql),并且我已经检查过并且默认情况下mysql.socket具有0777(至少我没有为 mariadb 配置任何东西)。

那么我是否应该授予 unix 套接字0777权限?无论如何,我想弄清楚为什么 php-memcached 无法访问套接字。

相关内容