PHP 7.2 fastcgi 在 Ubuntu 18.04 服务器上不起作用

PHP 7.2 fastcgi 在 Ubuntu 18.04 服务器上不起作用

我刚刚在 Ubuntu 18.04 服务器上安装了 LAMP,但无法让 PHP fastcgi 工作。

这是我的设置:

我的 fpm PHP 文件/etc/php/7.2/fpm/pool.d/sites.mydomain.conf::

[sites.mydomain]
 ...
user = sites
group = sites
 ...
listen = /run/php/php7.2-fpm.sites.mydomain.sock
 ...
listen.owner = www-data
listen.group = www-data

然后:

sudo service php7.2-fpm reload
sudo service php7.2-fpm restart

我的虚拟主机文件 /etc/apache2/sites-available/sites.mydomain.conf

    ServerName sites.mydomain
    ServerAdmin webmaster@localhost
    DocumentRoot /srv/www/sites/html

    <IfModule mod_fastcgi.c>
      AddHandler php7-fcgi-sites .php
      Action php7-fcgi-sites /php7-fcgi-sites
      Alias /php7-fcgi-sites /usr/lib/cgi-bin/php7-fcgi-sites
     FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi-sites -idle-timeout 60 -socket /var/run/php/php7.2-fpm.sites.mydomain.sock -pass-header Authorization

      <Directory /usr/lib/cgi-bin>
        Require all granted
      </Directory>
    </IfModule>

    <Directory /srv/www/sites/html>
      Options Indexes FollowSymLinks MultiViews
      AllowOverride None
      Require all granted
    </Directory>

然后:

sudo a2enmod actions
sudo service apache2 restart

但是PHP在运行脚本时不会被解释,页面会以纯文本的形式显示。

有人能告诉我我的设置出了什么问题吗?

注意:我在我的 Ubuntu 16.04 服务器上以完全相同的方式设置它,并且运行良好。

答案1

不幸的是,我采纳了这里答案的建议,但这些答案要么不正确,要么离题万里。

经过一番挖掘,我意识到有问题的模块(proxy_fcgi)实际上是bionic apache2-bin 包的一部分

因此需要的是:

a2enmod proxy_fcgi

答案2

最后,无需安装该libapache2-mod-fastcgi软件包。
技巧在文件中etc/apache2/sites-available/sites.mydomain.conf(参见我上面的例子)。将部分
替换<IfModule mod_fastcgi.c>

<FilesMatch "\.php$">
   SetHandler "proxy:unix:///var/run/php/php7.2-fpm.sites.mydomain.sock|fcgi://sites/"
</FilesMatch>

就大功告成了。
希望这对你有帮助。

答案3

所以...我对此进行了一些挖掘。

首先,mod_fcgid 似乎是 mod_fastcgi 的免费版本,但每个流发送的请求较少,因此速度较慢。

但两者似乎都相当过时了,而且 libapache2-mod-fastcgi 包似乎由于各种原因从 Debian 中撤出:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=835374

但是,从 apache 2.4.10 开始,最好将 mod_proxy_fcgi 模块与 php fpm 一起使用。https://serverfault.com/questions/783173/differences-between-mod-fastcgi-and-mod-proxy-fcgi

希望这能帮助您理清思路。大多数 php-fpm 指南似乎尚未针对 mod_proxy_fcgi 的使用进行更新,因此可能会造成混淆。

答案4

我从 17.10 升级到 18.04,页面只是加载 php 文件的内容,而不是渲染页面。我所要做的就是使用/etc/apache2/mods-enabled/fastcgi.conf以下内容更新我的文件:

<IfModule mod_fastcgi.c>
  AddHandler php7-fcgi-sites .php
  Action php7-fcgi-sites /php7-fcgi-sites
  Alias /php7-fcgi-sites /usr/lib/cgi-bin/php7-fcgi-sites
 FastCgiExternalServer /usr/lib/cgi-bin/php7-fcgi-sites -idle-timeout 60 -socket /var/run/php/php7.2-fpm.sock -pass-header Authorization

  <Directory /usr/lib/cgi-bin>
    Require all granted
  </Directory>
</IfModule>

相关内容