web-dev-qa-db-fra.com

Apache 2.4.6 sur Ubuntu Server: client refusé par la configuration du serveur (PHP FPM) [Pendant le chargement du fichier PHP]

Aujourd'hui, j'ai été mis à jour serveur Ubuntu 13.04 (Raring Ringtail) → 13.1 (Saucy Salamander).

Et mon installation Apache 2 est cassée.

Voici ma configuration:

Fichier 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

Fichier 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>

Fichier 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>

Lorsque j'essaye de charger le fichier via le navigateur, je reçois:

site_name/TEST/

Forbidden

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

Que dois-je réparer?

68
Jan Czarny

J'ai exactement le même problème. J'ai exécuté quelques hôtes virtuels sur mon ordinateur local pour le développement.

D'abord, j'ai changé /etc/Apache2/conf-available/php5-fpm.conf. J'ai remplacé tous les

Order Deny,Allow
Deny from all

à

Require all granted

La configuration doit être activée par a2enconf php5-fpm. J'ai fait la même chose avec les configurations de mes hôtes virtuels et effectué les remplacements.

Je pense que cela n'est pas conseillé pour des raisons de sécurité, mais tant que j'utilise mon serveur uniquement à des fins locales, je peux vivre avec.

113
user1259341

Je me suis heurté à ce problème 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. C'est, 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>
39
whyscream

J'ai rencontré un problème similaire aujourd'hui (mais avec mod_wsgi). Ce pourrait être un problème d'Apache 2.2 à 2.4. Une liste complète des changements peut être trouvée ici .

Pour moi, il a été utile d’ajouter une entrée <Directory>- pour chaque chemin dont le journal des erreurs se plaignait et de remplir la section avec Require all granted.

Donc, dans votre cas, vous pouvez essayer

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

et j'ai dû déplacer mon fichier de configuration du dossier conf.d vers le dossier sites-enabled.

Dans l’ensemble, c’est ce qui m’a été utile, mais je ne garantis pas que cela fonctionne également dans votre cas.

22
OBu

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>
20
Luke

Dans Apache2.conf, remplacez ou supprimez <Directory /> AllowOverride None Exigez tous les refusés </ Directory>, comme suggéré par Jan Czarny.

Par exemple:

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

Cela a fonctionné dans buntu 14.04 (Trusty Tahr).

9
user3801675

Votre nom de fichier virtualhost devrait être mysite.com.conf et devrait contenir cette information

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual Host. For the default virtual Host (this file) this
    # value is not decisive as it is used as a last resort Host regardless.
    # However, you must set it for any further virtual Host explicitly.
    ServerName mysite.com
    ServerAlias www.mysite.com

    ServerAdmin [email protected]
    DocumentRoot /var/www/mysite

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${Apache_LOG_DIR}/error.log
    CustomLog ${Apache_LOG_DIR}/access.log combined

<Directory "/var/www/mysite">
Options All
AllowOverride All
Require all granted
</Directory>


    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual Host. For example the
    # following line enables the CGI configuration for this Host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=Apache ts=4 sw=4 sts=4 sr noet
7
Gev Balyan

Je ne pense pas que le remplacement de "Exiger tous les refusés" par "Exiger tous les droits accordés" dans cette directive:

<Directory>

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

comme suggéré par Jan Czarny et ensuite par user3801675 est le moyen le plus sûr de résoudre ce problème.

Selon les fichiers de configuration Apache, cette ligne interdit l'accès à l'intégralité du système de fichiers de votre serveur. Le remplacer pourrait en effet permettre l’accès à vos dossiers d’hôte virtuel, mais au prix de permettre également l’accès à l’ensemble de votre ordinateur!

L'approche de Gev Balyan semble être l'approche la plus sûre ici. C'était la réponse aux "problèmes d'accès refusé" qui me rongeaient après avoir installé mon nouveau serveur Apache ce matin.

3
whatshisname

Et j'ai simplement eu cette erreur parce que j'ai utilisé un répertoire DocumentRoot totalement différent.

Mon principal DocumentRoot était le /var/www/html par défaut et sur le VirtualHost, j'ai utilisé /sites/example.com

J'ai créé un lien sur /var/www/html/example.com/sites/example.com). DocumentRoot a été défini sur /var/www/html/example.com

Ça a marché comme sur des roulettes.

1
user5140921

J'ai eu le même problème après la mise à niveau de mon système. Dans mon cas, le problème était dû à l'ordre de chargement des fichiers de configuration. Dans le /etc/httpd/httpd.confinitally, il était défini comme suit:

IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf

Après quelques heures de tentatives, j'ai essayé l'ordre suivant:

IncludeOptional sites-enabled/*.conf
IncludeOptional conf.d/*.conf

Et cela fonctionne bien maintenant.

0
CROSP

J'avais la configuration suivante dans mon fichier httpd.conf qui refusait d'exécuter le fichier wpadmin/setup-config.php à partir de wordpress. La suppression de la partie | -config a résolu le problème. Je pense que ce httpd.conf provient de plesk mais il pourrait s'agir d'une configuration suggérée par défaut de wordpress, je ne sais pas. Quoi qu'il en soit, je pourrais l'ajouter en toute sécurité une fois la configuration terminée.

<LocationMatch "(?i:(?:wp-config\\.bak|\\.wp-config\\.php\\.swp|(?:readme|license|changelog|-config|-sample)\\.(?:php|md|txt|htm|html)))">
                        Require all denied
                </LocationMatch>
0
Perrier