2010-09-07 17 views
0

J'ai une application web qui a un fichier config.php partagé. Dans ce fichier, j'inclue une fonction qui rassemble les messages d'erreur (en utilisant set_error_handler) puis, à la fin de l'exécution du script, enregistre les erreurs dans un fichier journal centralisé (en utilisant register_shutdown_function).Propriétaire de fichier différent pour les fichiers créés via cron vs apache

Les fichiers journaux sont créés quotidiennement, au format Y-m-d.log. Les scripts Cron s'exécutent toutes les 5 minutes dans le cadre de l'application, ils sont donc généralement à l'origine des premières erreurs chaque jour. Le fichier d'erreur est donc créé sous l'utilisateur cron, qui est le superutilisateur du compte.

Lorsque notre personnel vient travailler et utiliser l'application, le script s'exécute sous l'utilisateur apache (99). Le consignateur d'erreurs ne peut pas écrire dans le fichier d'erreurs, car il appartient à superutilisateur.

Une solution possible est d'avoir le script cron chown le fichier journal à 99, afin qu'il puisse être consulté par l'utilisateur apache. Est-ce que uid 99 est une convention acceptée pour l'hébergement d'apaches, ou est-ce que je vais causer des problèmes de portabilité si je code dur 99?

Existe-t-il d'autres moyens (sans recourir à exec/sudo) pour rendre mon journal accessible?

Mise à jour: Je n'ai pas d'accès shell au serveur.

Merci, Adam

+1

Avez-vous essayé de lancer la tâche cron sous l'utilisateur apache en utilisant 'sudo'? –

Répondre

1
[email protected]:~# su nobody 
$ id 
uid=65534(nobody) gid=65534(nogroup) Gruppen=65534(nogroup) 

vous n'avez pas besoin de l'identifiant. Le nom d'utilisateur est suffisant et si vous ne voulez pas rien hardcode, je vous suggère:

  • premier grep le /etc/apache2/apache2.config pour « Utilisateur »
  • faire un chmod en utilisant le nom d'utilisateur (chmod obtiendra l'ID utilisateur pour vous)
+0

Merci, mais je n'ai pas accès shell –

+0

mais vous pouvez écrire un script pour le faire .. –