web-dev-qa-db-ja.com

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サーバーでもまったく同じ方法で設定し、正常に動作します。

6
Duddy67

最後に、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
Duddy67

残念ながら、ここでの回答のアドバイスは間違っていました。

少し掘り下げた後、問題のモジュール(proxy_fcgi)が実際には bionic Apache2-binパッケージの一部 であることに気付きました。

必要なのは次のとおりです。

a2enmod proxy_fcgi
8
Rowy

だから...私はこれについていくつか掘り下げました。

まず、mod_fcgidはmod_fastcgiの無料バージョンですが、ストリームごとに送信するリクエストが少ないため、速度が遅いようです。

しかし、両方ともかなり古くなっているようで、libapache2-mod-fastcgiパッケージはさまざまな理由でDebianから引き出されたようです: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug= 835374

ただし、Apache 2.4.10の時点では、php fpmでmod_proxy_fcgiモジュールを使用するのが最適です。 https://serverfault.com/questions/783173/differences-between-mod-fastcgi-and-mod-proxy-fcgi

これが問題を解決するのに役立つことを願っています。周りのほとんどのphp-fpmガイドは、mod_proxy_fcgiの使用のためにまだ更新されていないようで、混乱を引き起こしている可能性があります。

2
az4th

私が収集したものから、libapache2-mod-fastcgiパッケージはまだバイオニックで利用できない可能性があります。そのため、Apache2で使用可能なfastcgiモジュールはありません。

0
Tommy Ngo

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>
0
timmillwood