chown: Opération non permise
J'ai un problème lorsque j'ai besoin de configurer le fichier propriétaire la permission de différents utilisateurs dans le système via un script php
donc ce que je fais via la commande suivante, où 1002 est l'id de l'utilisateur du système.
file_put_contents($filename, $content);
system("chown 1002 " . $filename . "");
mais j'ai cette erreur dans les productions serveur (serveur de test, il fonctionne très bien)
chown: changing ownership of `/var/spool/asterisk/06h12m7.call':
Operation not permitted
Veuillez cocher l'une des réponses que la solution de cette question ne peut être marqué comme fermé. Si aucun d'entre eux apporte une solution, puis de fournir des renseignements supplémentaires. Merci.
Si le script est exécuté par cron, il sera exécuté en tant que root, qui aurait la capacité de changer la propriété de fichier. (Non les superutilisateurs comme le
Si le script est exécuté par cron, il sera exécuté en tant que root, qui aurait la capacité de changer la propriété de fichier. (Non les superutilisateurs comme le
apache
utilisateur ne le font pas.) Espérons que cela aide un peu les gens!OriginalL'auteur mahen3d | 2012-11-05
Vous devez vous connecter pour publier un commentaire.
Depuis que vous avez marqués cette question
Linux
je suis en supposant que vous utilisezApache
serveur. Dans les serveurs de production de laApache
processus, qui possède tous les processus php, sont généralement exécutées par leapache user
ou d'un autre utilisateur qui n'est pas leroot user
.Gardant cela à l'esprit, ce que vous essayez de faire est à l'aide de la
chown
fonction, (qui va être exécuté en tant qu'utilisateur apache) pour changer le propriétaire d'un fichier que vous ne possédez pas. (Oui, vous ne pouvez changer de propriétaire pour les fichiers que vous possédez).Vous voir, citant le manuel php, le chown fonction tentatives pour changer le propriétaire:
Dans les serveurs de production en général, vous sont en cours d'exécution comme dans le répertoire de l'utilisateur mode, ce qui signifie que vous êtes lié pour les fichiers qui sont dans votre répertoire home, quelque chose comme
/home/yourusername/public_html
et en tant que tel, les fichiers à l'intérieur de la/var
répertoire sont tout simplement hors de votre portée (Ils sont généralement détenues par la racine) et c'est pourquoi vous ne pouvez pas chown.J'espère que cela a aidé. Cheers!
OriginalL'auteur Bruno Vieira
Vous êtes seulement autorisé à changer le propriétaire d'un fichier si vous êtes le super-utilisateur (ou en cours d'exécution avec les privilèges de root).
Très probablement sur votre serveur de test apache processus exécutant le script php est déjà propriétaire du fichier, ou si vous êtes l'exécuter avec les privilèges de root, et ce n'est pas le cas sur votre serveur de production. Je voudrais certainement pas recommandé d'exécuter dans un environnement de production avec les privilèges de root.
Quelques solutions qui peuvent aider en fonction de la situation, vous pouvez changer le "groupe" configuration du fichier à l'aide de la
chgrp
fonction. Ceci est permis par une personne avec des droits en écriture sur le fichier. Vous pouvez également rendre le fichier accessible en écriture pour tous les utilisateurs de lachmod
fonction, bien que cela peut être dangereux. Liens pour les deux fonctions sont énumérées ci-dessous:OriginalL'auteur mattc