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


68

Heute wurde ich Ubuntu Server 13.04 (Raring Ringtail) → 13.10 (Saucy Salamander) aktualisiert .

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>

Beim Versuch, die Datei über den Browser zu laden, wurde Folgendes angezeigt:

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?


Vielleicht vermisst du eine Allow from all? stackoverflow.com/questions/10351167/…
Qben

4
httpd.apache.org/docs/2.4/upgrading.html#run-time - # apache 2.4 ändern Allow from allund OrderzuRequire
Jan Czarny

Auch wäre es gut, die Konfiguration , die Karte zu sehen , site_name/TEST/zu /php5-fcgi/TEST.
Qben

Antworten:


115

Ich habe genau das gleiche Problem. Ich habe auf meinem lokalen Computer einige virtuelle Hosts für die Entwicklung ausgeführt.

Zuerst habe ich mich verändert /etc/apache2/conf-available/php5-fpm.conf. Ich habe jeden ersetzt

Order Deny,Allow
Deny from all

zu

Require all granted

Die Konfiguration muss von aktiviert werden a2enconf php5-fpm. Ich habe dasselbe mit meinen Konfigurationen für virtuelle Hosts gemacht und die Ersetzungen vorgenommen.

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


22
in apache2.conf -> ersetzen oder löschen<Directory /> AllowOverride none Require all denied </Directory>
Jan Czarny

40

Genau dieses Problem trat bei einer Neuinstallation von Apache 2.4 auf. Nach ein paar Stunden googeln und testen stellte ich schließlich fest, dass ich auch den Zugriff auf das Verzeichnis zulassen 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>

Es ist erwähnenswert, dass ich meine gesamte php5-fpm.conf auf die oben genannte umgestellt habe, damit meine funktioniert, anstatt nur den Verzeichnisteil hinzuzufügen.
Fabor

1
Das Hinzufügen eines <Directory>Tags für cgi-bin hat mein Problem gelöst!
Geremia

Danke @whyscream, das hat mein Problem gelöst. Tatsächlich ist diese Verzeichnisgewährung in der Datei serve-cgi-bin.conf definiert , wird jedoch nur geladen, wenn Sie cgi.load aktivieren! Ich würde die Lösung verbessern, indem ich die Definition aus serve-cgi-bin.conf hinzufüge: `<Verzeichnis / usr / lib / cgi-bin> AllowOverride Keine Optionen + ExecCGI -MultiViews + SymLinksIfOwnerMatch Erforderlich alle gewährt </ Directory>`
Scavenger

22

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

Für mich war es hilfreich, <Directory>für jeden Pfad, über den sich das Fehlerprotokoll beschwerte , einen zusätzlichen Eintrag hinzuzufügen und den Abschnitt mit zu füllen Require all granted.

In Ihrem Fall könnten Sie es also versuchen

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

und ich musste meine Konfigurationsdatei von Ordner conf.dzu Ordner verschieben sites-enabled.

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


3
+1 für den Link zur Änderungsliste von Apache 2.2-> 2.4. Dies sollte für alle, die ein Upgrade durchführen möchten, gelesen werden müssen.
Zilk

In welche Datei geht das? /etc/apache2/apache2.conf? Eine Datei in /etc/apache2/mods-enabled/? Irgendwo anders?
Peter Mortensen

20

Ich bin kürzlich auf das gleiche Problem gestoßen. Ich musste meine virtuellen Hosts ändern 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>

Schön, übertragen Sie eine Reihe von Domains von einem 2.2-Server auf einen 2.4-Server und behalten Sie die Datei vhost.conf, um Zeit zu sparen. Alles wurde geändert und alles wurde behoben. Vielen Dank
unverbunden

Vielen Dank. Dies hilft mir unter Windows 10 mit XAMpp 5.6
Kolodi

9

In apache2.conf, ersetzen oder löschen <Directory /> AllowOverride None alle verweigern erforderlich </ Directory>, wie vorgeschlagen Jan Czarny.

Zum Beispiel:

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

Dies funktionierte in Ubuntu 14.04 (Trusty Tahr).


Das traf mich genau nach dem Upgrade auf Ubunto 14.04 ... Danke.
Khmarbaise

Beeinträchtigt dies die Sicherheit?
Skora

7

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 info@mysite.com
    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

3

Ich glaube nicht, dass das Ersetzen von "Alle verweigert" durch "Alle gewährt erfordern" in dieser Richtlinie ersetzt wird:

<Directory>

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

Wie von Jan Czarny vorgeschlagen und von user3801675 getrennt, ist dies der sicherste Weg, um dieses Problem zu lösen.

Gemäß den Apache-Konfigurationsdateien verweigert diese Zeile den Zugriff auf das gesamte Dateisystem Ihres Servers. Das Ersetzen kann zwar den Zugriff auf Ihre virtuellen Hostordner ermöglichen, jedoch zum Preis des Zugriffs auf Ihren gesamten Computer!

Der Ansatz von Gev Balyan scheint hier der sicherste zu sein. Es war die Antwort auf die Probleme, denen der Zugriff verweigert wurde, nachdem ich heute Morgen meinen neuen Apache-Server eingerichtet hatte.


1
Dies ist keine Antwort, sondern ein Kommentar.
DrCord

1

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

Mein HauptdokumentRoot war der Standard /var/www/html und auf dem VirtualHost, den ich verwendet habe/sites/example.com

Ich habe einen Link auf /var/www/html/example.com (zu /sites/example.com) erstellt. DocumentRoot wurde auf gesetzt/var/www/html/example.com

Es funktionierte wie ein Zauber.


0

Ich hatte das gleiche Problem nach dem Upgrade meines Systems. In meinem Fall wurde das Problem durch die Reihenfolge des Ladens der Konfigurationsdateien verursacht. In der /etc/httpd/httpd.confAnfangszeit wurde es wie folgt definiert:

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

Nach einigen Stunden von Versuchen versuchte ich die folgende Reihenfolge:

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

Und jetzt funktioniert es gut.


0

Ich hatte die folgende Konfiguration in meiner httpd.conf, die die Ausführung der Datei wpadmin / setup-config.php 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 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>

-3

Denken Sie für diejenigen unter Ihnen, die AWS (Amazon Web Services) nutzen, daran, Ihren Sicherheitsgruppen eine Regel für Ihren SSL-Port (in meinem Fall 443) hinzuzufügen. Ich habe diesen Fehler erhalten, weil ich vergessen habe, den Port zu öffnen.

3 Stunden später meine Haare ausreißen ...


Diese Antwort hat nichts mit dieser Fehlermeldung zu tun.
Berend de Boer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.