Maison  >  Article  >  développement back-end  >  Comment résoudre l'échec de l'autorisation d'écriture du fichier PHP file_put_contents : échec d'ouverture du flux : autorisation refusée

Comment résoudre l'échec de l'autorisation d'écriture du fichier PHP file_put_contents : échec d'ouverture du flux : autorisation refusée

步履不停
步履不停original
2019-06-06 14:13:2310589parcourir

Comment résoudre léchec de lautorisation décriture du fichier PHP file_put_contents : échec douverture du flux : autorisation refusée

Problème

La méthode file_put_contents est utilisée dans la méthode d'écriture du journal Aujourd'hui, lors de l'exécution de la méthode de rappel pour écrire le journal, elle indique qu'il n'y a pas d'autorisation d'écriture. au fichier et un message d'erreur

file_put_contents : échec d'ouverture du flux : autorisation refusée (Tutoriel vidéo PHP)

Processus de solution

Vérifiez les autorisations du dossier de journal car il est généré quotidiennement. Il existe une tâche planifiée qui est exécutée régulièrement. L'utilisateur d'exécution est root, donc l'utilisateur et le groupe d'utilisateurs pour générer le dossier sont tous deux root. dans la méthode de rappel est www, et la méthode d'écriture

 if(!is_dir($dir)){
        mkdir($dir,0777,true);
    }

Si le répertoire n'existe pas, créez le répertoire, mais définissez les autorisations 777 lors de la création du dossier dans la fonction mkdir de PHP. En fait, le fichier créé l'a toujours. 755 autorisations. Dans le système Linux, il existe une autorisation par défaut lors de la création de fichiers/dossiers. Cette autorisation est affectée par le paramètre umask. Dans le fichier de configuration /etc/bashrc, nous pouvons trouver la configuration suivante :

if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
        umask 002else
        umask 022fi

UMask par défaut. dans le système Linux, c'est 022. Après avoir fonctionné avec notre 777 &, il devient 755. C'est la raison. Les paramètres ici affectent directement les paramètres d'autorisation par défaut du système Linux, pas seulement un problème PHP. Il n’est donc pas recommandé de le modifier directement pour changer 022 en 000.

Solution finale

Créez d'abord le répertoire, puis utilisez chmod pour modifier les autorisations en 777

mkdir('test', 0777);
chmod('test', 0777);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:PHP est-il saturé en 2019 ?Article suivant:PHP est-il saturé en 2019 ?