Ich versuche, ein Verzeichnis mit einem Kennwort zu schützen, und ich habe zwei Dateien in dem Verzeichnis, die durch ein Kennwort geschützt werden sollten:
HTACCESS:
###Contents of .htaccess:
AuthUserFile /var/www/html/path/to/my/directory/.htpasswd
AuthName "Protected Files"
AuthType Basic
Require user admin
HTPASSWD:
###Contents of .htpasswd
admin:oxRHPuqwKiANY
Das Passwort ist auch admin, aber egal welches Passwort ich versuche, es ist immer falsch. Es fragt sofort nach dem Passwort!
Was stimmt nicht mit dieser Konfiguration?
Dieses Problem tritt fast immer auf, weil Apache die .htpasswd-Datei nicht lesen kann. Es gibt vier Ursachen, die in den Sinn kommen:
der Pfad wird nicht korrekt analysiert. Wie haben Sie die .htaccess-Datei erstellt? Hat es Unix-Zeilenenden (im Vergleich zu Notepad unter Windows?)
ist der Pfad korrekt? Was zeigt der folgende Befehl (mit dem Pfad-Update)? Ls -l /var/www/html/path/to/my/directory/.htpasswd
hat der Webserver Zugriff auf die Datei? chmod 644 und sehen, ob das das Problem löst.
die .htpasswd-Datei kann nicht analysiert werden. In diesem Fall verwenden Sie die Verschlüsselung crypt (). Es scheint also, als hätten Sie die Datei unter Linux erstellt und es ist wahrscheinlich in Ordnung. Einige Verschlüsselungstypen funktionieren nur auf bestimmten Plattformen, wenn Sie im Zweifelsfall zu MD5 wechseln möchten.
Möglicherweise finden Sie hilfreiche Meldungen im Apache-Fehlerprotokoll.
Mein Geld ist auf # 3.
Ich hatte ein ähnliches Problem mit MAMP und es war, weil ich .htpasswd von Hand erstellt hatte. Die Lösung bestand darin, den Befehl htpasswd
im Terminal zu verwenden:
htpasswd -bc .htpasswd someuser somepass
dadurch wurde die .htpasswd-Datei erstellt, die gut mit meiner .htaccess-Datei funktionierte, die so aussah:
AuthType Basic
AuthName "This site is in alpha and requires a password."
AuthUserFile "/Applications/MAMP/htdocs/mywebsite/.htpasswd"
require valid-user
Es besteht eine geringe Chance, dass Sie den Kennwortschutz in einem übergeordneten Ordner sehen, nicht in dem Ordner, den Sie erwarten.
Wenn sich in Ihrem/etc/Apache2/sites-fähigen Ordner nur eine Datei befindet, prüfen Sie, ob es einen Abschnitt für Ihren Site-Ordner gibt.
<Directory /var/www/mysite.com>
AllowOverride All
</Directory>
andernfalls, wenn es eine Datei für Ihren Site-Namen gibt, wie:
/etc/Apache/sites-enabled/YOUR_SITE_NAME_HERE.conf
bearbeiten Sie diese Datei stattdessen und stellen Sie sicher, dass eine
AllowOverride All
da drin. Das ist der wichtige Teil! Wenn Sie nur das Minimum zulassen möchten, geben Sie Folgendes an:
AllowOverride AuthConfig
stattdessen.
Ich hatte das gleiche Problem. Das Problem war folgende Zeile:
Benötigen Sie den Benutzer admin
Wenn Sie admin
angeben, können Sie nur mit admin
auf das Verzeichnis zugreifen, auch wenn sich andere Benutzer in der .htpasswd
-Datei befinden.
Wenn Sie die Benutzer in der Datei .htpasswd
angeben möchten, können Sie die Zeile wie folgt ändern:
Erlaube einen gültigen Benutzer
Mein Problem war, dass ich keinen absoluten Pfad für die AuthFile-Zeile angegeben habe.
Ich hatte das gleiche Problem.
CRYPT_STD_DES - Standard-DES-basierter Hash mit einem aus zwei Buchstaben bestehenden Salt aus dem Alphabet "./0-9A-Za-z".
function standard_salt(){
$a = array_merge(range(0,9),range('a','z'),range('A','Z'));
return (string) $a[Rand(0,count($a)-1)].$a[Rand(0,count($a)-1)];
}
echo(crypt("admin",standard_salt()));
beispiel:
admin:dsbU.we73eauE
Onlione Javascript Encripter ist ebenfalls verfügbar.
Wenn es immer noch nicht funktioniert, kümmern Sie sich um diese:
echo $_SERVER['DOCUMENT_ROOT'];
chmod(".htpasswd",0644);
Ich habe ungefähr 2 Stunden gebraucht, um das gleiche Problem zu lösen. Aber das Problem war in nginx . Ich habe nginx als Front-Webserver und es gab eine Zeile für die Proxy-Konfiguration:
proxy_set_header Berechtigung "";
Es überschreibt das Feld für die Autorisierung, und Apache erhält kein Login und kein Kennwort.
Ich habe diese Zeile gerade kommentiert und es hat funktioniert.
Stellen Sie außerdem sicher, dass Ihre Kennwortdatei ANSI-kodiert ist.