PHP: fopen() de refus d'Autorisation
Je suis confus avec ce code:
test.php:
fopen('test.txt','a+');
quand j'exécute, j'obtiens une erreur:
Warning: fopen(test.txt): failed to open stream:
Permission denied in /var/www/html/yuelu3/mobile/text.php on line 2
test.txt:
-rwxrwxrwx. 1 jt jt 87 10月 7 20:58 test.txt
où est le problème?
Merci beaucoup!J'ai trouvé le problème,j'utilise FC13,en raison de la protéger de SELinux,une action est refusée.Donc, j'ai juste besoin de se débarrasser de la protéger.
serait-ce que par hasard être le fichier situé sur un montage NFS d'un répertoire ?
avez-vous également de vérifier les autorisations du répertoire du fichier?
Est php exécuté en tant que
oh...j'ai trouvé le problème...je l'utilise FC13,en raison de la protéger de SELinux, une action est refusé... Merci! 🙂
avez-vous également de vérifier les autorisations du répertoire du fichier?
Est php exécuté en tant que
jt
utilisateur? Si le fichier que vous souhaitez ouvrir est détenue par un autre utilisateur, qui pourrait être un problème.text.php
est de tenter d'ouvrir test.txt
oh...j'ai trouvé le problème...je l'utilise FC13,en raison de la protéger de SELinux, une action est refusé... Merci! 🙂
OriginalL'auteur T_t | 2010-10-07
Vous devez vous connecter pour publier un commentaire.
essayer
comme
est le plus probable à la recherche dans un autre répertoire
OriginalL'auteur Phill Pafford
J'ai reçu le même message d'erreur "failed to open stream. permission denied (accès refusé"lorsque vous essayez d'écrire un fichier sur le serveur à l'aide de PHP.
J'ai tout essayé sur internet afin de corriger l'erreur. J'ai changé la propriété des fichiers,des répertoires et sous-répertoires sur le serveur "apache", j'ai fait un "chmod 777" sur tous les fichiers, les répertoires, les subdiretories, j'ai couru "restorecon -R", j'ai couru "chcon unconfined_u:object_r:httpd_user_content_t:s0" sur tous les fichiers, mais la seule chose qui semblait travail est en train de tourner SELinux complètement.
J'ai finalement résolu le problème. Le problème réside dans le booléen paramètres utilisés par SELinux.
J'ai effectué la commande suivante pour obtenir une liste de tous les booléens liées à httpd.
$ getsebool -a | grep httpd
Cela nous a donné une liste d'environ 36 paramètres.
J'ai douloureusement passé et tourné sur tous les booléenne à l'aide de la setsebool de commande jusqu'à ce que le "failed to open stream. permission denied" s'en alla.
Quand j'ai tourné "sur" le httpd_unified boolean, l'erreur est allé loin!!
Quand j'ai tourné "off", l'erreur est revenue!!
OriginalL'auteur kwatts
Ce problème peut aussi être une conséquence de SELinux est activé. Cela peut être résolu à l'aide de:
Vous pouvez trouver plus d'informations sur les contextes à https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/sect-Managing_Confined_Services-The_Apache_HTTP_Server-Types.html
OriginalL'auteur mistapink
Utilisation
fopen($_SERVER['DOCUMENT_ROOT'].'test.txt','a+');
OriginalL'auteur Warrior
Chemins de toujours provoquer des problèmes lorsque vous essayez d'ouvrir les fichiers. Un moyen simple pour éviter d'avoir des problèmes lorsque vous tentez d'ouvrir des fichiers est de vérifier dans quel répertoire vous êtes et où vous faites l'appel à la.
Créer une simple page PHP et faire un appel d'imprimer le répertoire courant. Baisse de la page PHP dans le même répertoire que le fichier, et il vous indiquera le bon chemin vers le dossier et puis il suffit d'ajouter sur le //nom de fichier.xxx.
OriginalL'auteur Kyle
Vérifier le contexte SELinux en mode fichier pour être sûr qu'il est défini à l': httpd_user_content_t
...Si c'est pas le cas, utiliser:
...pour corriger le problème.
OriginalL'auteur vdbuilder