500-Fehler bei neuem Apache-Setup unter Fedora 23. Eine Datei wird geladen, die andere nicht

500-Fehler bei neuem Apache-Setup unter Fedora 23. Eine Datei wird geladen, die andere nicht

Okay, ich finde das ein bisschen bizarr.

Die meiste Erfahrung mit Apache habe ich also mit einer Ubuntu-Serverinstallation gemacht. Aber nachdem die Festplatte meines Servers einen katastrophalen Fehler erlitt (von dem ich zum Glück alle Daten wiederherstellen konnte), nutzte ich die Gelegenheit, auf den neuesten Fedora-Server umzusteigen. Dafür gab es mehrere Gründe, aber der größte Grund waren Probleme mit dem Ubuntu-Server-Installationsprogramm, insbesondere, dass es meine drahtlose Tastatur nicht erkennen konnte und meine letzte kabelgebundene Tastatur kaputt ging.

Wie auch immer, ich habe httpd (Apache), PHP, PostgreSQL und PHP-PGSQL installiert. Und dann habe ich alle meine alten Seiten in das neue Webverzeichnis (/var/www/html/) verschoben. Dann bekam ich einen 500-Fehler.

Ich habe mich aus Spaß entschlossen, von vorne anzufangen. Habe meine Webseiten zur Seite verschoben (in /var/www/html2/) und eine kleine Seite zum Testen erstellt. Nur einfaches HTML, nichts Ausgefallenes, kein PHP, nur die Grundlagen.

<html>
<head>
<title>HOME!!!</title>
</head>
<body>
<h1>THIS WORKS!!!</h1>
</body>
</html>

Es wurde ohne Probleme geladen.

Dann habe ich alle Seiten zurück in den Hauptordner verschoben (vorerst mit Ausnahme von .htaccess) und die gerade erstellte Seite funktionierte immer noch einwandfrei. Da ich vermutete, dass das Problem bei PHP lag, habe ich unten ein bisschen PHP-Code hinzugefügt:

echo 'hello';

Hat gut geklappt.

Und jetzt wird es merkwürdig. Ich habe versucht, die alte footer.php von meiner Site in diese kleine Testseite einzubinden, und da fangen die Probleme an. Die Fußzeile wird einfach nicht geladen.

<?php include 'footer.php'; ?>

Der Rest der Seite wird geladen, nur nicht der Fußbereich. Dann habe ich aus einer Laune heraus den gesamten Inhalt der Fußbereichsdatei in eine neue Datei namens footer2.php kopiert und die Testseite so geändert, dass sie stattdessen auf footer2.php verweist. Sie wird nun vollständig und ohne Probleme geladen.

Endlich glaube ich, dass ich auf etwas gestoßen bin, also ändere ich die Berechtigungen von footer.php so, dass sie mit denen von footer2.php übereinstimmen. Und es wird immer noch nicht geladen.

Aus irgendeinem Grund wird footer.php nicht geladen, footer2.php jedoch schon.

Also, was ist der Unterschied?

Diese Dateien sind genau gleich! Hier ist der Beweis:

[blackwidower@Twilight html]$ md5sum footer*
257cbd773ed765deb5ad0015852cdf20  footer2.php
257cbd773ed765deb5ad0015852cdf20  footer.php
[blackwidower@Twilight html]$ ls -l footer*
-rw-rw-r--. 1 blackwidower blackwidower 1271 Feb  1 00:08 footer2.php
-rw-rw-r--. 1 blackwidower blackwidower 1271 Feb  1 00:08 footer.php

Einer wird jedoch geladen, der andere nicht.

Kann ich etwas tun, um weitere Daten zu finden, die diese Dateien trennen könnten?

Als Referenz ist hier das Apache-Fehlerprotokoll:

[Mon Feb 01 00:14:15.160242 2016] [core:notice] [pid 1800] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Mon Feb 01 00:14:15.161310 2016] [suexec:notice] [pid 1800] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.7.2. Set the 'ServerName' directive globally to suppress this message
[Mon Feb 01 00:14:15.192180 2016] [auth_digest:notice] [pid 1800] AH01757: generating secret for digest authentication ...
[Mon Feb 01 00:14:15.192361 2016] [http2:warn] [pid 1800] AH02951: mod_ssl does not seem to be enabled
[Mon Feb 01 00:14:15.193015 2016] [lbmethod_heartbeat:notice] [pid 1800] AH02282: No slotmem from mod_heartmonitor
[Mon Feb 01 00:14:15.218713 2016] [mpm_prefork:notice] [pid 1800] AH00163: Apache/2.4.18 (Fedora) PHP/5.6.17 configured -- resuming normal operations
[Mon Feb 01 00:14:15.218762 2016] [core:notice] [pid 1800] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Mon Feb 01 00:14:43.969957 2016] [:error] [pid 1801] [client 192.168.7.7:49878] PHP Fatal error:  Call to undefined function displayCopyrightInfo() in /var/www/html/footer2.php on line 13
[Mon Feb 01 00:14:44.086110 2016] [core:error] [pid 1802] (13)Permission denied: [client 192.168.7.7:49880] AH00035: access to /images/cc-by-nc-nd-88x31.png denied (filesystem path '/var/www/html/images/cc-by-nc-nd-88x31.png') because search permissions are missing on a component of the path, referer: http://192.168.7.2/index2.php
[Mon Feb 01 00:14:44.087064 2016] [core:error] [pid 1804] (13)Permission denied: [client 192.168.7.7:49882] AH00035: access to /images/valid-xhtml10-blue.png denied (filesystem path '/var/www/html/images/valid-xhtml10-blue.png') because search permissions are missing on a component of the path, referer: http://192.168.7.2/index2.php
[Mon Feb 01 00:14:44.087737 2016] [core:error] [pid 1806] (13)Permission denied: [client 192.168.7.7:49884] AH00035: access to /images/vcss-blue.png denied (filesystem path '/var/www/html/images/vcss-blue.png') because search permissions are missing on a component of the path, referer: http://192.168.7.2/index2.php
[Mon Feb 01 00:15:47.538488 2016] [:error] [pid 1808] [client 192.168.7.7:49890] PHP Warning:  include(footer.php): failed to open stream: Permission denied in /var/www/html/index2.php on line 7
[Mon Feb 01 00:15:47.538534 2016] [:error] [pid 1808] [client 192.168.7.7:49890] PHP Warning:  include(): Failed opening 'footer.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/index2.php on line 7

BEARBEITEN:

Auf Anraten einer Person habe ich „ls -Z“ ausgeführt. Folgendes habe ich gefunden:

unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/footer2.php
               system_u:object_r:fusefs_t:s0 /var/www/html/footer.php

Ich habe also ein Differential gefunden. Die Frage ist: Was bedeutet das und wie kann man es korrigieren?

Antwort1

Ich habe also ein Differential gefunden. Die Frage ist: Was bedeutet das und wie kann man es korrigieren?

Um auf die Anmerkung von Benutzer @Dirk einzugehen: SELinux ist ein System, das auf „Kontexten“ basiert, um die Sicherheit Ihres Systems zu erhöhen. Ein Kontext beschreibt, welche Aktionen an einer bestimmten Datei oder einem bestimmten Verzeichnis ausgeführt werden können oder wofür eine Datei verwendet werden kann. In diesem Fall footer2.phphat einen Kontext von httpd_sys_content_t, was bedeutet, dass die Datei für „ verwendet werden kann.http-Zwecke", müssen Sie dasselbe Kontextlabel hinzufügen, footer.phpum es über das SELinux-Sicherheitssystem zugänglich zu machen, oder einfach den Kontext im übergeordneten Verzeichnis wiederherstellen (auf den meisten Systemen /var/wwwsind Dateien am Speicherort standardmäßig auf Labels für "http-Zwecke"). Eine Alternative hierzu besteht darin, SELinux vollständig zu deaktivieren. Dies ist jedoch keine gute Vorgehensweise.

Also,

So legen Sie die Kontextbezeichnung (dauerhaft) für die footer.phpDatei fest:

semanage fcontext -a -t httpd_sys_content_t /var/www/html/footer.php
restorecon /var/www/html/footer.php

Dasselbe können Sie für das übergeordnete Verzeichnis (und seinen gesamten Inhalt) tun:

semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -R "/var/www/html(/.*)?"

Weitere Informationen finden Sie auf derRed Hat-Kundenportal für Linux mit verbesserter Sicherheit.

verwandte Informationen