fopen Autorisation refusée sur un fichier avec les permissions 777
Puisque le titre de ce post est assez explicites, je vais juste sauter le code :
echo sprintf('%o', fileperms('test.txt'))."<br/>";
fopen("test.txt", "w");
Et avec ce que je reçois :
100777
fopen(test.txt): failed to open stream: Permission denied
Des idées ?
Edit : Problème résolu : il y avait des listes de contrôle d'accès sur le serveur qui n'étaient pas configurés correctement.
Merci !
Peut-être que SElinux vous bloque? Essayez
ls -Z
sur le fichier.OriginalL'auteur personne3000 | 2012-04-29
Vous devez vous connecter pour publier un commentaire.
Je pense qu'il est possible que vous ayez à écrire/lire les autorisations sur le fichier, mais pas sur le dossier. Essayez ceci dans le public de la racine de votre site et de voir si vous pouvez lire ou écrire le fichier.
Pour le mode sans échec (http://php.net/manual/en/function.fopen.php), php doc de dire ce qui suit:
Dernier, vous devez également être sûr que php a accès au dossier que vous essayez d'écrire à.
OriginalL'auteur DanFritz
Je pense que le problème que vous rencontrez est propriétaire du fichier de problème ... vous pouvez l'utiliser pour trouver le problème
Quelque chose de ce qui peut être un problème ... sauf si vous avez de la racine de l'utilisateur .. vous ne pas être en mesure d'écrire dans le fichier .. .essayez de changer la propriété avec
chown
php.net/manual/en/function.chown.php et chnage d'autorisation de fichier avecchmod
php.net/manual/en/function.chmod.phpJe vais demander à l'administrateur du serveur pour le faire rightaway. Mais encore, je ne comprends pas pourquoi le PHP ne peut pas écrire dans un fichier si tous les utilisateurs sont autorisés à écrire :-s
Je me demandais aussi! stackoverflow.com/questions/10414208/...
Finalement trouvé la solution : il y avait des Acl sur le serveur.
OriginalL'auteur Baba
Je viens de tomber sur ce problème, et, malheureusement, le message d'erreur fourni aucune idée de la raison. J'ai dû donner 777 sur le fichier de la classe inclus dans le fichier qui a donné le message d'erreur. Le message d'erreur ne dit que le fichier php qui appelle la classe, qui avait déjà 777.
Vérifiez que le fichier qui est mentionné dans le message d'erreur (disons index.php), et de vérifier ensuite les classes qui sont instanciés à l'intérieur du fichier (class-file.php, class-writer.php, etc). Ensuite, vérifiez les autorisations de ces fichiers (class-file.php, class-writer.php).
Une fois j'ai donné des autorisations pour le fichier de classe, il a travaillé normalement. Peut-être que l'hébergeur a changé quelque chose dans leur config, depuis tout a fonctionné jusqu'à il y a quelques jours.
OriginalL'auteur Juha Untinen
J'ai eu même problème: le dossier a été 777, mais fopen n'a pas travaillé. fopen dit refuser l'autorisation. Assurez-vous que votre script d'avoir un 'bon' autorisations. peut-être que ça vous aidera:
OriginalL'auteur Nikita Pushkar