webentwicklung-frage-antwort-db.com.de

Apache 2.4.6 unter Ubuntu Server: Client durch Serverkonfiguration abgelehnt (PHP FPM) [Beim Laden PHP file]

Heute wurde ich aktualisiert buntu Server 13.04 (Raring Ringtail) → 13.1 (Saucy Salamander).

Und meine Apache 2-Installation ist kaputt.

Hier meine Konfiguration:

Datei 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

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

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

Wenn ich versuche, die Datei über den Browser zu laden, erhalte ich:

site_name/TEST/

Forbidden

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

Was soll ich tun, um das Problem zu beheben?

68
Jan Czarny

Ich habe genau das gleiche Problem. Ich habe ein paar virtuelle Hosts auf meinem lokalen Computer zum Entwickeln ausgeführt.

Zuerst habe ich /etc/Apache2/conf-available/php5-fpm.conf. Ich habe jeden ersetzt

Order Deny,Allow
Deny from all

zu

Require all granted

Die Konfiguration muss durch a2enconf php5-fpm. Ich habe dasselbe mit meinen virtuellen Hosts-Konfigurationen gemacht und die Ersetzungen vorgenommen.

Ich denke, dies wird aus Sicherheitsgründen nicht empfohlen, aber solange ich meinen Server nur für lokale Zwecke benutze, kann ich damit leben.

113
user1259341

Genau auf dieses Problem bin ich bei einer Neuinstallation von Apache 2.4 gestoßen. Nach ein paar Stunden googeln und testen stellte ich schließlich fest, dass ich auch Zugriff auf das Verzeichnis gewähren musste, das das (nicht vorhandene) Ziel der Alias-Direktive enthält. Das heißt, das hat bei mir funktioniert:

# 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

Ich bin heute auf ein ähnliches Problem gestoßen (aber mit mod_wsgi). Möglicherweise handelt es sich um ein Apache 2.2-to-2.4-Problem. Eine umfassende Liste der Änderungen finden Sie hier .

Für mich hat es geholfen, ein zusätzliches <Directory>- Eintrag für jeden Pfad, über den sich das Fehlerprotokoll beschwert hat und Füllen des Abschnitts mit Require all granted.

Also in deinem Fall könntest du es versuchen

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

und ich musste meine Konfigurationsdatei aus dem Ordner conf.d zum Ordner sites-enabled.

Alles in allem hat das den Trick für mich getan, aber ich garantiere nicht, dass es auch in Ihrem Fall funktioniert.

22
OBu

Ich bin vor kurzem auf dasselbe Problem gestoßen. Ich musste meine virtuellen Hosts wechseln von:

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

  DocumentRoot /home/example/public

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

Zu:

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

  DocumentRoot /home/example/public

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

Im Apache2.conf, ersetze oder lösche <Directory /> AllowOverride None Erfordert alle verweigerten </ Directory>, wie von Jan Czarny vorgeschlagen.

Beispielsweise:

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

Dies funktionierte in buntu 14.04 (Trusty Tahr).

9
user3801675

Ihr virtualhost-Dateiname sollte mysite.com.conf sein und diese Informationen enthalten

<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

Ich glaube nicht, dass das Ersetzen von "Require all denied" durch "Require all grant" in dieser Direktive:

<Directory>

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

wie von Jan Czarny vorgeschlagen und vom Benutzer 3801675 getrennt, ist dies die sicherste Methode, um dieses Problem zu lösen.

Gemäß den Apache-Konfigurationsdateien verweigert diese Zeile den Zugriff auf das gesamte Dateisystem Ihres Servers. Wenn Sie es ersetzen, können Sie zwar auf Ihre virtuellen Host-Ordner zugreifen, dies kostet jedoch auch Zugriff auf Ihren gesamten Computer!

Der Ansatz von Gev Balyan scheint hier der sicherste zu sein. Dies war die Antwort auf die "Probleme mit verweigertem Zugriff", die mich plagten, nachdem ich heute Morgen meinen neuen Apache-Server eingerichtet hatte.

3
whatshisname

Und ich habe einfach diesen Fehler bekommen, weil ich ein völlig anderes DocumentRoot-Verzeichnis verwendet habe.

Mein Haupt-DocumentRoot war der Standard /var/www/html Und auf dem VirtualHost habe ich /sites/example.com Verwendet.

Ich habe einen Link zu /var/www/html/example.com (Zu /sites/example.com) Erstellt. DocumentRoot wurde auf /var/www/html/example.com Gesetzt.

Es wirkte wie ein Zauber.

1
user5140921

Ich hatte das gleiche Problem nach dem Upgrade meines Systems. In meinem Fall wurde das Problem durch die Reihenfolge des Ladens der Konfigurationsdateien verursacht. Im /etc/httpd/httpd.conf Wurde es zunächst folgendermaßen definiert:

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

Nach einigen Stunden von Versuchen habe ich die folgende Reihenfolge versucht:

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

Und es funktioniert jetzt gut.

0
CROSP

Ich hatte die folgende Konfiguration in meiner httpd.conf, die das Ausführen der wpadmin/setup-config.php-Datei von WordPress verweigerte. Das Entfernen des Teils | -config löste das Problem. Ich denke, diese httpd.conf ist von plesk, aber es könnte eine vorgeschlagene Standardkonfiguration von WordPress sein, ich weiß es nicht. Wie auch immer, ich könnte es sicher wieder hinzufügen, nachdem das Setup abgeschlossen ist.

<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