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.
Si le serveur ne configure pas l'authentification, les utilisateurs ne pourront pas accéder aux ressources protégées.
Le type d'authentification peut être défini à l'aide de la fonction header() de PHP :
 header('WWW-Authenticate: Basic realm="My Realm"');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.
Vérifiez que les informations d'identification fournies par l'utilisateur sont correctes ou guidez l'utilisateur pour réinitialiser son mot de passe.
Des erreurs 401 peuvent également se produire si l'utilisateur n'est pas autorisé à accéder au fichier protégé.
Vérifiez que les autorisations de fichiers sont correctement définies et que les utilisateurs disposent des droits d'accès appropriés.
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.
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-userUne mauvaise configuration du serveur ou des problèmes techniques peuvent également provoquer des erreurs HTTP 401.
Vérifiez les journaux du serveur pour les messages d'erreur pertinents et contactez le support technique si nécessaire.
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'authentification de base
header('WWW-Authenticate: Basic realm="My Realm"');
// Vérifier les informations d'identification
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
    // Lire l'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'identification fournies avec celles du fichier
        if ($_SERVER['PHP_AUTH_USER'] == $username && $_SERVER['PHP_AUTH_PW'] == $password) {
            $authenticated = true;
            break;
        }
    }
    // Si l'utilisateur est authentifié,puis autorisez l'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'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.