2017-05-04 6 views
0

J'ai un script simple qui émet Permission denied avertissement dans le navigateur:renommage PHP() permission refusée par Apache (SELinux liés)

rename('/opt/web/test.tmp', '/opt/web/test.tmp1') 

Chemin du script est /opt/web/test_rename.php

/opt/, /opt/web/ et /opt/web/test_rename.php sont 777 et avoir apache propriétaire/groupe.

httpd propriétaire du processus est apache

test.tmp est de 777 et ont apache propriétaire ainsi

Il fonctionne très bien avec cli.

Que pouvais-je faire d'autre pour le faire fonctionner via Apache?

+0

Bonjour, quels droits ont le fichier /opt/web/test.tmp? –

+0

Copie possible de [open \ _basedir - comment définir un répertoire spécifique] (http://stackoverflow.com/questions/13291185/open-basedir-how-to-set-for-specific-directory) – Brian

+0

cela peut aider, http://stackoverflow.com/questions/8103860/move-uploaded-file-gives-failed-to-open-stream-permission-denied-error-after –

Répondre

0

Le problème était avec SELinux. Il peut bloquer la fonction php rename.

J'ai trouvé la réponse ici: http://forums.fedoraforum.org/archive/index.php/t-111081.html

Sur la Fedora Core 3 distribution Linux, vous pouvez obtenir un "failed to open stream: Permission denied in ..." message. En fait, la modification de l'autorisation du répertoire ne fonctionnera pas (même si vous avez défini 0777). C'est à cause du nouveau noyau SELinux qui permet à l'utilisateur apache d'écrire uniquement dans/tmp (je pense). Afin de résoudre le problème, vous devez désactiver le SELinux (au moins pour le service Apache) pour permettre au serveur d'écrire dans d'autres répertoires. Pour ce faire, exécutez l'application system-config-securitylevel et désactivez le service SE to apache. Redémarrez votre système et continuez votre travail.