Position actuelle: Accueil> Derniers articles> Explication détaillée des causes et solutions des erreurs PHP HTTP 401 non autorisées

Explication détaillée des causes et solutions des erreurs PHP HTTP 401 non autorisées

M66 2025-11-02

Aperçu des erreurs non autorisées PHP HTTP 401

L'erreur HTTP 401 non autorisée signifie que le serveur nécessite une authentification de l'utilisateur pour accéder à la ressource. Ce message d'erreur est renvoyé lorsqu'un utilisateur tente d'accéder à un contenu protégé et ne parvient pas à s'authentifier. Cet article résumera les causes courantes des erreurs 401 en PHP et fournira les solutions correspondantes.

Authentification non configurée

Si le serveur ne configure pas l'authentification, les utilisateurs ne pourront pas accéder aux ressources protégées.

Solution

Le type d'authentification peut être défini à l'aide de la fonction header() de PHP :

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

Identifiants invalides

Si le nom d'utilisateur ou le mot de passe fourni par l'utilisateur ne correspond pas aux informations stockées sur le serveur, l'accès échouera.

Solution

Vérifiez que les informations d'identification fournies par l'utilisateur sont correctes ou guidez l'utilisateur pour réinitialiser son mot de passe.

Les fichiers protégés sont inaccessibles

Des erreurs 401 peuvent également se produire si l'utilisateur n'est pas autorisé à accéder au fichier protégé.

Solution

Vérifiez que les autorisations de fichiers sont correctement définies et que les utilisateurs disposent des droits d'accès appropriés.

Fichier .htaccess manquant

Sur le serveur Apache, le fichier .htaccess est utilisé pour configurer l'authentification. Si ce fichier est absent du répertoire, le serveur ne peut pas effectuer l'authentification.

Solution

Créez un fichier .htaccess dans le répertoire protégé et ajoutez la configuration d'authentification :

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

Erreur de serveur

Une mauvaise configuration du serveur ou des problèmes techniques peuvent également provoquer des erreurs HTTP 401.

Solution

Vérifiez les journaux du serveur pour les messages d'erreur pertinents et contactez le support technique si nécessaire.

Cas pratiques

Supposons qu'il existe un dossier protégé private contenant un fichier secret.txt protégé par mot de passe. L'authentification peut être effectuée à l'aide du code PHP suivant :

 <!--?php
// Configurer l&#39;authentification de base
header('WWW-Authenticate: Basic realm="My Realm"');

// Vérifier les informations d&#39;identification
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
    // Lire l&#39;utilisateur et le mot de passe du fichier
    $users = file("users");
    $authenticated = false;

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

        // Compare les informations d&#39;identification fournies avec celles du fichier
        if ($_SERVER['PHP_AUTH_USER'] == $username && $_SERVER['PHP_AUTH_PW'] == $password) {
            $authenticated = true;
            break;
        }
    }

    // Si l&#39;utilisateur est authentifié,puis autorisez l&#39;accès
    if ($authenticated) {
        fopen("private/secret.txt", "r");
    } else {
        // Non vérifié,erreur de retour
        header('HTTP/1.0 401 Unauthorized');
        echo 'Authentication failed.';
    }
} else {
    // Informations d&#39;identification non disponibles,Exiger une authentification
    header('HTTP/1.0 401 Unauthorized');
    echo 'Authorization Required.';
}
?-->

Grâce à la configuration ci-dessus, l'accès aux ressources protégées peut être géré efficacement en PHP pour éviter les erreurs HTTP 401 non autorisées qui affectent l'expérience utilisateur.