Ich versuche, die Verzeichnisliste für einen Ordner außerhalb des Webstamms von einem anderen lokalen ext4-Mount aus zu aktivieren, der die Standardauthentifizierung verwendet, erhalte jedoch eine leere Liste und keine protokollierten Fehler. Was seltsam ist, ist, dass wenn ich den bekannten Speicherort einer Datei unter diesem Verzeichnis in meinem Browser ablege, die Datei einwandfrei heruntergeladen wird.
Hier ist meine example.conf
Datei:
<virtualhost *:80>
ServerAdmin donotreply@blah.com
ServerName example.com
ServerAlias www.example.com
DirectoryIndex index.php
DocumentRoot /var/www/example.com
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
LogLevel warn
ErrorLog /var/apachelogs/error.log
CustomLog /var/apachelogs/access.log combined
Alias /blah2 "/blah1/blah2"
<Location /blah2>
Options +Indexes +MultiViews +FollowSymLinks
IndexOptions +FancyIndexing
</Location>
</virtualhost>
Und hier ist meine .htaccess
AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/home/myusername/.htpasswd"
Require valid-user
Außerdem habe ich kommentiert die IndexIgnore
in/etc/apache2/mods-enabled/autoindex.conf
#IndexIgnore .??* *~ *# RCS CVS *,v *,t
Ich bin gelaufen chmod -R 755 /blah1/blah2
und chgrp -R www-data /blah1/blah2
und chmod a+x -R /blah1/blah2
. Der Ordnerbesitzer ist Mitglied von www-data. Wenn ich laufe, sudo usermod -a -G www-data myusername
kann ich alle Dateien und Ordner gut durchsuchen und lesen.
Bei einigen Tests funktioniert meine Konfiguration einwandfrei, wenn ich / blah1 / blah2 in mein Home-Verzeichnis verschiebe und den Alias ändere. Es hat etwas damit zu tun, dass es sich auf einem anderen Mount befindet, das mod_autoindex durcheinander bringt, obwohl Apache die Dateien selbst klar lesen kann. Das Entfernen der Authentifizierung hilft nicht. Mit LogLevel warn
bekomme ich keine protokollierten Fehler. Nachdem ich mein LogLevel in trace4 geändert habe, ist hier mein Fehlerprotokoll .
Hier ist die Mount Line von /etc/fstab
:
UUID=[theuuid] /blah1 ext4 rw,nosuid,nodev,errors=remount-ro 0 0
BEARBEITEN Letzte Anmerkung: Um zu bestätigen, dass www-Daten in meinen Ordner lesen und schreiben können, habe ich das folgende PHP-Skript erstellt:
<?php
mkdir ("testdir");
var_dump(scandir('.'));
?>
Das Ergebnis: Verzeichnis testdir wird mit dem Eigentümer www-data: www-data erstellt, und die Liste der Verzeichnisse und Dateien wird als Variable ausgegeben.
EDIT2 Ich habe die folgenden Befehle ausgeführt, um die Berechtigungen korrekt festzulegen :
chmod 755 /blah1/blah2
chmod 755 /blah1
find /blah1/blah2 -type d -exec chgrp www-data {} +
find /blah1/blah2 -type d -exec chmod o+rx {} +
find /blah1/blah2 -type d -exec chmod g+rwxs {} +
Immer noch das gleiche Ergebnis.
<Directory /blah1/blah2>
statt zu verwenden <Location /blah2>
?
LogLevel debug
und anschließenden Überprüfung von Protokolldateien?