web-dev-qa-db-fra.com

PHP 7.2 fastcgi ne fonctionne pas sur le serveur Ubuntu 18.04

Je viens d'installer LAMP sur un serveur Ubuntu 18.04 et je ne parviens pas à faire fonctionner PHP fastcgi. Voici mes paramètres:

Mon fichier 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

puis

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

Mon fichier hôte virtuel: 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>

puis

Sudo a2enmod actions
Sudo service Apache2 restart

Mais PHP n'est pas interprété lors de l'exécution de scripts, les pages sont affichées sous forme de texte brut.
Quelqu'un peut-il me dire ce qui ne va pas dans mon environnement?

Remarque: je le configure exactement de la même manière sur mon serveur Ubuntu 16.04 et tout fonctionne correctement.

4
Duddy67

Enfin, il n'est pas nécessaire d'installer le package libapache2-mod-fastcgi.
L'astuce se déroule dans le fichier etc/Apache2/sites-available/sites.mydomain.conf (voir mon exemple ci-dessus).
Remplacez la partie <IfModule mod_fastcgi.c> par

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

et tu as fini.
J'espère que ça aide.

0
Duddy67

J'ai malheureusement pris l'avis des réponses ici, qui étaient incorrectes ou tangentes.

Après avoir creusé un peu, je me suis rendu compte que le module en question (proxy_fcgi) est en fait partie du paquet bionique Apache2-bin

donc tout ce qui était nécessaire était:

a2enmod proxy_fcgi
6
Rowy

Alors ... j'ai creusé un peu là-dessus.

Premièrement, il semble que mod_fcgid soit la version gratuite de mod_fastcgi, mais envoie moins de demandes par flux, donc plus lentement.

Mais les deux semblent être relativement obsolètes et il semble que le paquetage libapache2-mod-fastcgi ait été extrait de Debian pour diverses raisons: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug= 835374

Cependant, depuis Apache 2.4.10, il est préférable d’utiliser le module mod_proxy_fcgi avec php fpm. https://serverfault.com/questions/783173/differences-between-mod-fodcgi-and-mod-proxy-fcgi

J'espère que cela aide à clarifier les choses. La plupart des guides php-fpm ne semblent pas encore être mis à jour pour l'utilisation de mod_proxy_fcgi, ce qui peut être source de confusion.

2
az4th

D'après ce que j'ai compris, il se peut que le paquet libapache2-mod-fastcgi ne soit pas encore disponible pour bionic. En tant que tel, il n'y a pas de module fastcgi disponible pour Apache2.

0
Tommy Ngo

J'ai mis à jour de 17.10 à 18.04 et les pages se chargeaient simplement du contenu du fichier php plutôt que de rendre la page. Tout ce que je devais faire était de mettre à jour mon fichier /etc/Apache2/mods-enabled/fastcgi.conf avec les éléments suivants:

<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