SetHandler指令在VirtualHost中失败,但在主配置中有效

时间:2019-01-07 05:02:12

标签: php apache config fpm

设置为CentOS 7,Apache 2.4.6,php-fpm 5.6和7.3(通过remi repo)。

我最近将默认的phpmod设置转换为php-fpm,使PHP 5.4.16正常运行。现在,我正在尝试启用PHP 7.3作为每个虚拟主机的选项。我安装并运行了php73-php-fpm,然后查看了Apache端。

我的/etc/httpd/conf.d/php.conf包含以下指令:

<FilesMatch \.php$>
#    SetHandler application/x-httpd-php
    SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>

这对所有主机都适用。然后,我将此<FilesMatch>指令添加到一个Virtual Host .conf文件中:

<VirtualHost *:80>
    ServerName www.sittingduck.co.nz
    ServerAlias sittingduck.co.nz
    DocumentRoot /var/www/sittingduck.co.nz/public_html
    ErrorLog /var/log/httpd/sittingduck.co.nz.error.log
    CustomLog /var/log/httpd/sittingduck.co.nz.requests.log combined
    <FilesMatch \.php$>
        SetHandler "proxy:fcgi://127.0.0.1:9073"
    </FilesMatch>
</VirtualHost>

当我重新启动httpd服务器时,上面指定的ErrorLog中将显示以下内容。

[proxy:error] [pid 17061] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:9073 (*) failed
[proxy_fcgi:error] [pid 17061] [client 54.36.148.97:33788] AH01079: failed to make connection to backend: 127.0.0.1

在确认两个php-fpm服务器确实正在运行之后...

tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      16794/php-fpm: mast 
tcp        0      0 127.0.0.1:9073          0.0.0.0:*               LISTEN      17510/php-fpm: mast 

...我接下来尝试将主php.conf切换到9073端口。当我这样做时,所有站点都可以工作,并且可以(使用上面站点的phpinfo页面)确认我正在PHP 7.3上运行。

我在这里想念什么?正如错误所暗示的那样,虚拟主机配置肯定是在php.conf之后加载的,并且fpm肯定处于工作状态,并且端口显然可以访问。

我觉得定义指令的方式有些规则或警告。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题是http还是https。我的配置文件定义的是*:80,但我没想到正在查看测试页的https版本。 *:443虚拟主机位于一个单独的配置文件中,该文件已在certbot工具安装后添加。手动编辑此额外文件可以解决问题。

我仍然不太确定为什么日志在开始时出现错误,然后在以后出现错误,但这可能是由于在不同时间通过http和/或https请求特定页面所致。