Aktueller Standort: Startseite> Neueste Artikel> Ausführliche Erklärung der Fehlerursachen und Lösungen für PHP HTTP 401 Unauthorized

Ausführliche Erklärung der Fehlerursachen und Lösungen für PHP HTTP 401 Unauthorized

M66 2025-11-02

PHP HTTP 401 Unautorisierter Fehler – Übersicht

Der HTTP 401 Unauthorized-Fehler bedeutet, dass der Server eine Benutzerauthentifizierung erfordert, um auf die Ressource zuzugreifen. Diese Fehlermeldung wird zurückgegeben, wenn ein Benutzer versucht, auf geschützte Inhalte zuzugreifen und sich nicht authentifizieren kann. In diesem Artikel werden die häufigsten Ursachen von 401-Fehlern in PHP zusammengefasst und entsprechende Lösungen bereitgestellt.

Authentifizierung nicht eingerichtet

Wenn der Server keine Authentifizierung einrichtet, können Benutzer nicht auf geschützte Ressourcen zugreifen.

Lösung

Der Authentifizierungstyp kann mit der PHP-Funktion header() festgelegt werden:

 header('WWW-Authenticate: Basic realm="My Realm"');

Ungültige Anmeldeinformationen

Wenn der vom Benutzer angegebene Benutzername oder das Passwort nicht mit den auf dem Server gespeicherten Informationen übereinstimmen, schlägt der Zugriff fehl.

Lösung

Überprüfen Sie, ob die vom Benutzer angegebenen Anmeldeinformationen korrekt sind, oder weisen Sie den Benutzer an, sein Passwort zurückzusetzen.

Auf geschützte Dateien kann nicht zugegriffen werden

401-Fehler können auch auftreten, wenn der Benutzer keine Berechtigung zum Zugriff auf die geschützte Datei hat.

Lösung

Stellen Sie sicher, dass die Dateiberechtigungen richtig festgelegt sind und die Benutzer über die entsprechenden Zugriffsrechte verfügen.

Fehlende .htaccess-Datei

Im Apache-Server wird die .htaccess-Datei zur Konfiguration der Authentifizierung verwendet. Fehlt diese Datei im Verzeichnis, kann der Server keine Authentifizierung durchführen.

Lösung

Erstellen Sie eine .htaccess-Datei im geschützten Verzeichnis und fügen Sie die Authentifizierungskonfiguration hinzu:

 AuthType Basic
AuthName "My Realm"
AuthUserFile /path/to/auth-file
Require valid-user

Serverfehler

Auch eine falsche Serverkonfiguration oder technische Probleme können HTTP 401-Fehler verursachen.

Lösung

Überprüfen Sie die Serverprotokolle auf relevante Fehlermeldungen und wenden Sie sich bei Bedarf an den technischen Support.

Praktische Fälle

Angenommen, es gibt einen geschützten Ordner „private“ , der eine passwortgeschützte Datei „secret.txt“ enthält. Die Authentifizierung kann mit dem folgenden PHP-Code erfolgen:

 <!--?php
// Richten Sie die Basisauthentifizierung ein
header('WWW-Authenticate: Basic realm="My Realm"');

// Überprüfen Sie die Anmeldeinformationen
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
    // Benutzer und Passwort aus Datei lesen
    $users = file("users");
    $authenticated = false;

    foreach ($users as $line) {
        list($username, $password) = explode(":", trim($line));

        // Vergleicht die bereitgestellten Anmeldeinformationen mit denen in der Datei
        if ($_SERVER['PHP_AUTH_USER'] == $username && $_SERVER['PHP_AUTH_PW'] == $password) {
            $authenticated = true;
            break;
        }
    }

    // Wenn der Benutzer authentifiziert ist,Erlauben Sie dann den Zugriff
    if ($authenticated) {
        fopen("private/secret.txt", "r");
    } else {
        // Nicht verifiziert,Fehler zurückgeben
        header('HTTP/1.0 401 Unauthorized');
        echo 'Authentication failed.';
    }
} else {
    // Anmeldeinformationen nicht verfügbar,Authentifizierung erforderlich
    header('HTTP/1.0 401 Unauthorized');
    echo 'Authorization Required.';
}
?-->

Durch die obige Konfiguration kann der Zugriff auf geschützte Ressourcen effektiv in PHP verwaltet werden, um HTTP 401 Unauthorized-Fehler zu vermeiden, die die Benutzererfahrung beeinträchtigen.