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.
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.