2017-08-24 5 views
0

[dupliquées]fopen(): failed to open stream: Permission refusée (lorsque l'autorisation de chemin est 777)

fonction PHP fopen() obtenu erreur de permission quand tout le chemin est avec 777 permission.
détails du serveur: Centos 7 , PHP 7.1.8 , Apache 2.4.27

PHP Source Code:

$myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); 

Message d'erreur:

Attention: fopen (newfile.txt): failed to open stream: Permission denied dans /var/www/html/test/file.php à la ligne 3

MyTest Url:http://MyIPAddress/test/file.php

777 chemins d'autorisation:

/var/www 
/var/www/html 
/var/www/html/test 
/var/www/html/test/file.php 

liste des fichiers avec des autorisations:(Edit 1)

[[email protected] ~]# ls -la /var/www/html/test 
total 8 
drwxrwxrwx. 2 root root 41 Aug 24 20:26 . 
drwxrwxrwx. 4 root root 48 Aug 24 19:37 .. 
-rwxrwxrwx. 1 root root 179 Aug 24 20:22 file.php 
-rwxrwxrwx. 1 root root 1 Aug 24 20:22 newfile.txt 

SELinux est activé & ont accès liste:

[[email protected] ~]# semanage fcontext -l |grep "var/www" 
/var/www(/.*)?          all files   system_u:object_r:httpd_sys_content_t:s0 
/var/www/html(/.*)?        all files   system_u:object_r:httpd_sys_rw_content_t:s0 
/var/www/(/.*)?         all files   system_u:object_r:httpd_sys_content_t:s0 
/var/www/html/(.*)?        all files   system_u:object_r:httpd_sys_rw_content_t:s0 

(Edit2) *: Si je désactiver SELinux le problème résoudra, problème de la SELinux, je vais faire une nouvelle question à ce sujet c'est pourquoi j'ai eu une erreur quand j'ai aussi une liste d'accès.

+1

pouvez-vous essayer de mettre un chemin absolu au lieu du chemin relatif juste pour tester si cela fonctionne pour l'absolu. –

+0

@Kimberlee, 'Attention: fopen (/var/www/html/test/newfile.txt): échec de l'ouverture du flux: autorisation refusée' – Root125

+0

Le fichier txt est-il créé dans le répertoire? sinon, peut-être vous pouvez essayer de créer le fichier txt et essayer à nouveau fopen .. –

Répondre

0

Cela semble étrange, si vous avez les permissions root et avez fait avec succès un:

sudo chmod 777 -R /var/www 

Le fopen COMAND devrait fonctionner sans problème, comme @Kimberlee ensemble, vous shuld essayez de fournir un chemin absolu pour la nouvelle fichier, comme ceci:

$file = fopen('/var/www/html/test/newfile.txt', 'w'); 
fwrite($file,'something'); 
chmod('/var/www/html/test/newfile.txt', 0777);