web-dev-qa-db-fra.com

PHP chmod (): Opération non autorisée, désapprobation de safe_mode impliquée?

Je me bats un peu pour comprendre le concept de chmod() de PHP car le cours que je suis en train de suivre est un peu dépassé et implique safe_mode. Il indique que safe_mode est désactivé, les restrictions pour modifier les autorisations avec chmod() dans un fichier lorsque le propriétaire n'est pas le même que celui qui exécute la commande sont supprimées. Je travaille avec PHP = 5.5.9 en conjonction avec XAMPP, j'ai vérifié que les drapeaux sont désactivés (juste au cas où), mais je n'arrive pas à le faire fonctionner. Comme j'exécute ce qui suit PHP scénario:

echo "File permissions :" .  decoct(fileperms("file_permissions.php"));
chmod("file_permissions.php" ,0777);

Je reçois la sortie suivante:

Warning: chmod(): Operation not permitted

Mes autorisations pour le fichier sont les suivantes

-rwxrwxrwx@  1 joelhernandez  staff     24 Apr 14 06:59 file_permissions.php

Et j'ai exécuté ps aux | grep httpd pour confirmer que le mon serveur Web fonctionne sous l'utilisateur "démon".

Comme je change la propriété du fichier en démon:

-rwxrwxrwx@  1 daemon  staff     24 Apr 14 06:59 file_permissions.php

Tout fonctionne, je ne comprends pas pourquoi, comme j'avais compris qu'avec safe_mode désactivé, la propriété des fichiers ne signifierait rien, mais les autorisations de fichiers étaient le moyen de gérer l'accès.

14
Joel Hernandez

L'utilisateur daemon n'est pas root, il n'est donc pas autorisé de changer le mode d'un fichier appartenant à un autre utilisateur. PHP safe_mode n'est pas la cause ici. L'avertissement vous indique que l'opération tentée a échoué car l'utilisateur du serveur Web n'était pas autorisé à modifier le mode.

L'opération a réussi après avoir modifié manuellement la propriété du fichier en daemon car les utilisateurs sont autorisés à modifier le mode des fichiers dont ils sont propriétaires.

22
Andrew Medico