php-fpm 不创建 .sock 文件
php-fpm doesn't create .sock file
我在亚马逊 Linux 上有一个 AWS 服务器 运行。
我使用本指南安装 php7(页面底部):https://forums.aws.amazon.com/thread.jspa?messageID=695576
我想使用 nginx 而不是 Apache,所以我还安装了 php70w-fpm 和 nginx 包。但是,当我 service start php-fpm
时,它不会在我的服务器上的任何位置创建 php-fpm.sock 文件。我已经签入 /var/run 并且还有 运行 find / -name "*.sock"
其中只有 returns /var/run/rpcbind.sock
.
编辑:这里真正的解决方案是 nginx 配置中 www.conf
和 fastcgi_pass
中的监听必须匹配。使用 sockets 还是 tcp 由你决定。
答案是根本不使用 .sock
文件。
在 /etc/php-fpm.d/www.conf
中有:
listen = 127.0.0.1:9000
所以在我的 nginx 配置中我输入了
fastcgi_pass 127.0.0.1:9000;
而不是使用类似
的东西
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
我知道为时已晚,但这可能会有所帮助。您可以使用 Python 从头开始创建一个新的锁定文件。
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/run/php/php-fpm.sock')"
如果您的 php-fpm 由 systemd
控制,您必须检查 php-fpm 服务单元文件中的 PrivateTmp
选项(您可以将此文件方式 find /etc/systemd -name "php-fpm*" ! -type d
)
如果此选项设置为true PrivateTmp=true
,将为php-fpm主进程创建新的文件系统命名空间,默认情况下其他进程将无法操作此命名空间中的文件( nginx,例如)。您可以在此处阅读有关 systemd PrivateTmp
选项的更多详细信息:https://www.freedesktop.org/software/systemd/man/systemd.exec.html
希望对您有所帮助!
就我而言,我错过了 /etc/php/7.0/fpm/pool.d/wordpress.conf
正确的部分
[wordpress]
listen = /var/run/php7-fpm-wordpress.sock
*.sock 文件不是从文件名创建的,而是从节名创建的。
确保您拥有以下文件夹并且它是可写的。
/var/run/php-fpm
然后在 www.conf
中输入:
listen = /var/run/php-fpm/php-fpm.sock
然后 运行:
sudo service php-fpm restart
- 然后更新您的
nginx.conf
:
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
- 最后重启nginx:
sudo service nginx restart
我遇到了错误,因为我复制粘贴了一个 pool.d/xx.conf 并且新的具有相同的池名称 [whatever],所以第二个没有加载。
没有错误,没有套接字。
希望对某人有所帮助:)
我遇到了同样的问题 - 没有创建套接字 - 和 Phil 的解决方案相同。
我刚刚复制粘贴了一个池文件,并且只更改了侦听部分中的套接字名称。没有插座。
这是因为池名称已被使用。当您已经有同名的池时,则不会创建新的套接字。
因此,为每个套接字设置唯一的池名称很重要。
所以当 copy/paste 池配置时:更改池名称和套接字名称!
在我的例子中,当在 Ispconfig 3.2.2 中将特定网站的 PHP 版本示例更改为 PHP7.4 时,应该在 /etc/php/7.4/fpm/pool.d/
中创建 webxx.conf 文件但是,它是在根 /
.
下创建的
所以现在我只是将 webxx.conf 文件移动到 /etc/php/7.4/fpm/pool.d/
并重新启动 PHP7.4-fpm sudo systemctl restart php7.4-fpm
并且它可以正常工作。
我在亚马逊 Linux 上有一个 AWS 服务器 运行。
我使用本指南安装 php7(页面底部):https://forums.aws.amazon.com/thread.jspa?messageID=695576
我想使用 nginx 而不是 Apache,所以我还安装了 php70w-fpm 和 nginx 包。但是,当我 service start php-fpm
时,它不会在我的服务器上的任何位置创建 php-fpm.sock 文件。我已经签入 /var/run 并且还有 运行 find / -name "*.sock"
其中只有 returns /var/run/rpcbind.sock
.
编辑:这里真正的解决方案是 nginx 配置中 www.conf
和 fastcgi_pass
中的监听必须匹配。使用 sockets 还是 tcp 由你决定。
答案是根本不使用 .sock
文件。
在 /etc/php-fpm.d/www.conf
中有:
listen = 127.0.0.1:9000
所以在我的 nginx 配置中我输入了
fastcgi_pass 127.0.0.1:9000;
而不是使用类似
的东西fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
我知道为时已晚,但这可能会有所帮助。您可以使用 Python 从头开始创建一个新的锁定文件。
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/run/php/php-fpm.sock')"
如果您的 php-fpm 由 systemd
控制,您必须检查 php-fpm 服务单元文件中的 PrivateTmp
选项(您可以将此文件方式 find /etc/systemd -name "php-fpm*" ! -type d
)
如果此选项设置为true PrivateTmp=true
,将为php-fpm主进程创建新的文件系统命名空间,默认情况下其他进程将无法操作此命名空间中的文件( nginx,例如)。您可以在此处阅读有关 systemd PrivateTmp
选项的更多详细信息:https://www.freedesktop.org/software/systemd/man/systemd.exec.html
希望对您有所帮助!
就我而言,我错过了 /etc/php/7.0/fpm/pool.d/wordpress.conf
正确的部分
[wordpress]
listen = /var/run/php7-fpm-wordpress.sock
*.sock 文件不是从文件名创建的,而是从节名创建的。
确保您拥有以下文件夹并且它是可写的。
/var/run/php-fpm
然后在
www.conf
中输入:listen = /var/run/php-fpm/php-fpm.sock
然后 运行:
sudo service php-fpm restart
- 然后更新您的
nginx.conf
:fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
- 最后重启nginx:
sudo service nginx restart
我遇到了错误,因为我复制粘贴了一个 pool.d/xx.conf 并且新的具有相同的池名称 [whatever],所以第二个没有加载。 没有错误,没有套接字。
希望对某人有所帮助:)
我遇到了同样的问题 - 没有创建套接字 - 和 Phil 的解决方案相同。
我刚刚复制粘贴了一个池文件,并且只更改了侦听部分中的套接字名称。没有插座。
这是因为池名称已被使用。当您已经有同名的池时,则不会创建新的套接字。
因此,为每个套接字设置唯一的池名称很重要。
所以当 copy/paste 池配置时:更改池名称和套接字名称!
在我的例子中,当在 Ispconfig 3.2.2 中将特定网站的 PHP 版本示例更改为 PHP7.4 时,应该在 /etc/php/7.4/fpm/pool.d/
中创建 webxx.conf 文件但是,它是在根 /
.
所以现在我只是将 webxx.conf 文件移动到 /etc/php/7.4/fpm/pool.d/
并重新启动 PHP7.4-fpm sudo systemctl restart php7.4-fpm
并且它可以正常工作。