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!