68 votes

(Serveur Ubuntu) Apache 2.4.6 -> Client refusé par la configuration du serveur (FPM PHP) [Pendant le chargement du fichier php]

Aujourd'hui, j'ai été mis à jour le serveur Ubuntu 13.04 -> 13.10

Et mon apache2 est cassé

Voici ma config

error.log

 [Fri Oct 18 10:48:07.237170 2013] [:notice] [pid 8292:tid 139804677900160] FastCGI: process manager initialized (pid 8292)
[Fri Oct 18 10:48:07.241185 2013] [mpm_event:notice] [pid 8289:tid 139804677900160] AH00489: Apache/2.4.6 (Ubuntu) mod_fastcgi/mod_fastcgi-SNAP-0910052141 configured -- resuming normal operations
[Fri Oct 18 10:48:07.241652 2013] [core:notice] [pid 8289:tid 139804677900160] AH00094: Command line: '/usr/sbin/apache2'
[Fri Oct 18 10:48:28.313923 2013] [authz_core:error] [pid 8294:tid 139804573181696]   [client 81.219.59.75:3536] AH01630: client denied by server configuration: /usr/lib/cgi-bin/php5-fcgi
 

default.conf

 #EU
<VirtualHost *:80>
  #ServerName 
  DocumentRoot /var/www/dev_stable

  DirectoryIndex index.php index.html index.htm


  <Directory /var/www/dev_stable>
        Options Indexes FollowSymLinks MultiViews

        AllowOverride all
        Require all granted


    </Directory>

</VirtualHost>
 

mods-enabled / fastcgi.conf

 #<IfModule mod_fastcgi.c>
#  AddHandler fastcgi-script .fcgi
# FastCgiWrapper /usr/lib/apache2/suexec
#  FastCgiIpcDir /var/lib/apache2/fastcgi
#</IfModule>


    <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
    </Ifmodule>
 

Quand j'essaye de charger le fichier via le navigateur, j'ai:

nom_site / TEST /

 Forbidden

You don't have permission to access /php5-fcgi/TEST/index.php on this server.
 

Que dois-je réparer?

115voto

user1259341 Points 476

j'ai exactement le même problème. j'ai couru un couple d'hôtes virtuels sur ma machine locale pour le développement. d'abord j'ai modifié /etc/apache2/conf-available/php5-fpm.conf. j'ai remplacé tous les:

Order Deny,Allow
Deny from all

pour

Require all granted

la conf doit être activée par a2enconf php5-fpm. j'ai fait de même avec mes hôtes virtuels configs et fait les remplacements.

je pense que ce n'est pas conseillé pour des raisons de sécurité, mais aussi longtemps que j'utilise mon serveur local seulement je peux vivre avec ça.

40voto

whyscream Points 123

Je suis tombé sur cette question exacte lors d’une nouvelle installation d’apache 2.4. Après quelques heures de recherches sur Google et de tests, j'ai finalement découvert que je devais également autoriser l'accès au répertoire contenant la cible (non existante) de la directive Alias. Cela a fonctionné pour moi:

 # File: /etc/apache2/conf-available/php5-fpm.conf
<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

    # NOTE: using '/usr/lib/cgi-bin/php5-cgi' here does not work, 
    #   it doesn't exist in the filesystem!
    <Directory /usr/lib/cgi-bin>
        Require all granted
    </Directory>
</Ifmodule>
 

22voto

OBu Points 1210

J'ai rencontré un problème similaire aujourd'hui (mais avec mod_wsgi), il pourrait être un apache 2.2 à 2.4 problème. Une liste complète des changements est disponible ici. Pour moi, il a contribué à ajouter un supplément de l' <Directory>-entrée pour chaque chemin de l'erreur de fichier journal a été de se plaindre et de remplissage de la section, avec l' Require all granted.

donc dans votre cas vous pouvez essayer de

<Directory /usr/lib/cgi-bin/php5-fcgi>
Require all granted
Options FollowSymLinks
</Directory>

et j'ai dû passer ma conf fichier de conf.d de sites-enabled.

Dans l'ensemble, cela a fonctionné pour moi, mais je ne garantis pas que cela fonctionne dans votre cas.

20voto

Luke Points 6072

J'ai récemment rencontré le même problème. Je devais changer mes hôtes virtuels de:

 <VirtualHost *:80>
  ServerName local.example.com

  DocumentRoot /home/example/public

  <Directory />
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>
 

À:

 <VirtualHost *:80>
  ServerName local.example.com

  DocumentRoot /home/example/public

  <Directory />
    Options All
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>
 

9voto

user3801675 Points 31

dans apache2.conf -> remplacer ou supprimer AllowOverride none Requérir à tous les refusés Comme suggéré par Jan Czarny

Par exemple:

<Directory /> Options FollowSymLinks AllowOverride None #Require all denied Require all granted </Directory>

Cela a fonctionné dans Ubuntu 14.04

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X