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:
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>
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?
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.
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>
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.
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>
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).
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
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.
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.
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.conf
initally, 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.
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>