web-dev-qa-db-fra.com

Ping php5-fpm et les pages de statut d'erreur? Erreur LimitInternalRecursion?

Je ne sais pas si je suis hors de portée ici, mais j’avais au départ posté ceci sur ask Ubuntu ici

J'ai php5-fpm fonctionnant très bien. Mon site entier fonctionne comme prévu, presque aucun problème. Cependant, je ne parviens pas à utiliser les pages ping et d'état. Lorsque je navigue sur mydomain.com/status ou mydomain.com/ping, un message d'erreur (403, 404, 500, dépend de la configuration).

Je suis très nouveau dans la pile LAMP. J'ai été jeté aux loups à ce sujet, mais je dois le comprendre.

J'ajouterai tout ce qui me semble pertinent ci-dessous, mais si quelque chose me manque, merci de votre patience!

Exécuter Ubuntu 14.04
Apache 2.4
PHP 5.5

Mods activés dans Apache (les plus importants du moins):

  • mpm_event
  • fastcgi
  • actes
  • alias

Je vais laisser de côté la majorité de la configuration fpm car elle fonctionne, mais voici les paramètres de ping et de statut ... Configuration Pretty Vanilla.

pm.status_path = /status
ping.path = /ping

Ecoute sur un socket pour réduire les frais généraux TCP/IP ...

listen = /var/run/php5-fpm.sock

J'ai php5-fpm.conf configuré dans/etc/Apache2/conf-available/et un lien symbolique dans conf-enabled, dont le contenu est le suivant:

<IfModule mod_fastcgi.c>

    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization

    <LocationMatch "/(ping|status)">
        SetHandler php5-fcgi-virt
        Action php5-fcgi-virt /php5-fpm-handler.fcgi virtual
    </LocationMatch>

</IfModule>

La plupart de la documentation que j'ai trouvée fait référence à LocationMatch en tant que seul correctif nécessaire pour que le ping et les pages d'état fonctionnent. Je ne suis pas sûr où aller d'ici. J'ai essayé tout ce que je peux trouver sur le Web en vain. J'ai apporté diverses modifications au fichier php5-fpm.conf et chaque modification n'a aucun effet ou me conduit à une erreur différente. J'ai rencontré des erreurs de serveur interne, des problèmes d'autorisations, etc. Avec cette configuration, je reçois actuellement une erreur de serveur interne 500.

Toute aide est au-delà appréciée! Je vous remercie!


EDIT 09Feb2015:

Après avoir lu ce guide utile ici J'ai remplacé le LocationMatch dans php5-fpm.conf par:

<FilesMatch "^ping|status$">
    SetHandler php-script
</FilesMatch>

Cela n'a pas résolu le problème, mais a changé l'effet. Je reçois maintenant une erreur 404. Toujours pas sûr de ce que je manque ici ...


EDIT 10Feb2015:

Je suis revenu à la notion plus répandue selon laquelle "LocationMatch" est correct et que "FilesMatch" ne me rapprochera pas du succès. Encore une fois, très nouveau pour l’hébergement et les serveurs LAMP en général, mais j’ai trouvé que lorsque j’obtiens une erreur 404 (avec le "FilesMatch), rien n’est enregistré dans /var/log/apace2/error.log, mais lors de l’utilisation du" LocationMatch " Je reçois toujours une erreur 500 et une entrée de journal:

[Tue Feb 10 00:29:17.216917 2015] [core:error] [pid 8978:tid 140200547378944] [client IP:Port] AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

J'ai un peu fouillé sur le Web, mais je ne trouve pas une bonne documentation décrivant le correctif de ce problème. Des idées?

1
Erick Christian

Crédit à Harold Snel sur Demandez à Ubuntu de répondre à cette question pour moi ... Il a dit:

J'ai eu le même problème. Avec beaucoup de Google-ing et d'essayer, j'ai compris.

Vous devez faire correspondre ce que vous avez configuré dans votre hôte virtuel avec ce qui est configuré dans le fastcgi.conf (de php-fpm.conf).

En outre, il est plus judicieux d'utiliser '/ fpm-status' et '/ fpm-ping' dans le fichier /etc/php5/fpm/pool.d/www.conf. Dans ce cas, vous ne devriez pas avoir de conflit avec la page "statut" d’Apache.

Donc voici mon fastcgi.conf:

<IfModule mod_fastcgi.c>
    AddType application/x-httpd-fastphp5 .php
    Action application/x-httpd-fastphp5 /php5-fcgi
    Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
    FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
    <Directory /usr/lib/cgi-bin>
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Require all granted
            Order allow,deny
            Allow from all
    </Directory>
</IfModule>

Et voici ce que j'ai ajouté dans mon Apache 000-default.conf:

<LocationMatch "/(fpm-ping|fpm-status)">
     SetHandler php5-fcgi-virt
     Action php5-fcgi-virt /php5-fcgi virtual
</LocationMatch>

Si vous ne limitez pas l'accès à votre serveur virtuel Apache par défaut, vous devez l'ajouter à LocationMatch pour les commandes fpt-ping et fpm-status:

     Order deny,allow
     Deny from all
     Allow from <your-IP>

Pour autoriser l'utilisation de php-fpm par hôte virtuel, conservez simplement le fichier 'standard' libphp.so et ajoutez les lignes suivantes à votre hôte virtuel pour rediriger tous les fichiers php vers php-fpm:

    <FilesMatch ".+\.ph(p[345]?|t|tml)$">
            SetHandler application/x-httpd-fastphp5
    </FilesMatch>

Bonne php-fpm'ing !!!

2
Erick Christian