我在 Centos 6 发行版上配置 PHP_FPM。我正在使用 php 5.4.45 和 apache 2.2.15 以及“mod_proxy.so”来调用套接字。但是使用以下 Vhost 和 php-fpm 配置,我的站点日志中仍然存在相同的两个问题:
[Tue Mar 10 11:36:49 2020] [error] (111)Connection refused: proxy: FCGI: attempt to connect to 127.0.0.1:0 (*) failed
[Tue Mar 10 11:36:49 2020] [error] [client 192.168.1.38] AH01079: failed to make connection to backend: localhost
我已经尝试并阅读了大量的解决方案,但没有一个对我有这么大的帮助。这里是我的 Vhost 和 php-fpm www.conf 文件的配置:
<VirtualHost _default_:80>
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Order allow,deny
Allow from all
AllowOverride All
</Directory>
ErrorLog logs/default-error_log
LogLevel warn
TransferLog logs/default-access_log
CustomLog logs/default-request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
ProxyPassMatch ^/(.*\.php)$ fcgi://localhost/var/www/html/$1
DirectoryIndex index.php info.php
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php-fpm/default.sock|fcgi://localhost/"
</FilesMatch>
listen = /var/run/php-fpm/default.sock
listen.owner = apache
listen.group = apache
listen.mode = 0660
user = apache
group = apache
listen.allowed_clients = 127.0.0.1
php_value[opcache.file_cache] = /var/lib/php/opcache
谢谢你的关注。此致
Apache 2.2 本身没有
mod_proxy_fcgi
(参见这个问题),您必须从其他来源获得它。此外,使用mod_proxy
该SetHandler
指令适用于 2.4.10 版本。所以:<FilesMatch>
块没有效果,所以你可以删除它,只有您的
ProxyPassMatch
指令有效。但是您的版本mod_proxy_fcgi
不支持 Unix 域套接字,因此您需要使用套接字连接到PHP-FPMTCP/IP
。为此,请修改www.conf
文件并将listen
指令替换为:并重新启动PHP-FPM。在 Apache 2 端,将
ProxyPassMatch
指令替换为:并重新加载Apache2。