2009-04-30 6 views
27

Je suis sur un système linux étranger et j'ai besoin de déterminer l'utilisateur sur lequel apache fonctionne (et php aussi).Obtenir l'utilisateur apache linux de php

Le but: Je dois obtenir le propriétaire du script (ce n'est pas un problème car je peux utiliser SplFileInfo) et le comparer au propriétaire du processus apache.

Je suis ouvert à toute proposition alternative.

Cordialement, Mario

Edit: Informations complémentaires:

Le script est un générateur miniature, qui utilise un fichier XML pour générer des pouces à partir d'images plus grandes. Le script doit créer des dossiers et écrire des fichiers. Comme je ne peux pas influencer la configuration php et que je n'ai pas d'accès shell, cela doit être fait très silencieusement. Le processus de création s'arrête par exception et envoie un message sur échec. Comme la plupart des fonctions de php ne peuvent pas lancer des exceptions sur les échecs, j'ai besoin de vérifications manuelles pour déterminer l'environnement dans lequel je suis. Par conséquent, j'ai besoin de l'utilisateur apache pour le comparer à un répertoire ou un propriétaire de fichier.

+0

En option, vous pouvez simplement utiliser/tmp, qui est accessible à tous. – Anonymous

+0

Ce n'est pas utile pour notre cas, car nous ne pouvons pas servir les images générées en dehors du docroot. –

Répondre

52

Vous pouvez appeler la fonction php exec pour exécuter whoami:

<?php echo exec('whoami'); ?> 
+0

thanx grant! thanx à l'anon., les deux méthodes fournies ici sont très bien adaptés. Je vais utiliser la méthode de Grant, car je ne peux pas affirmer que la fonction posix est disponible. –

+1

exec() ne fonctionnera pas si safe_mode est activé et whoami est en dehors de safe_mode_exec_dir. – Anonymous

+0

absolument correct, mais pour mon environnement cible c'est la meilleure solution. (pas safe_mode;)) –

1

phpinfo va déverser beaucoup d'informations système. Pour les installations apache2, une section affiche les identifiants d'utilisateur et de groupe Apache. Essayez de créer un script PHP qui n'a qu'une seule ligne, un appel à phpinfo(), et ouvrez-le dans votre navigateur Web.

+0

Ce n'est pas le but;) Je sais comment obtenir l'utilisateur via info php ... j'ai besoin d'acquérir les noms comme des chaînes à partir d'un script. –

+0

... et l'analyse de phpinfo (INFO_MODULES) n'est PAS une alternative;) –

8

voir posix_getuid() et posix_getpwuid()

5

Quelques réponses compliquées ici.

Cela fonctionne pour moi:

$user = getenv('APACHE_RUN_USER'); 

Je ne sais pas si cela est juste une chose nouvelle qui a ajouté à apache puisque cette question a été posée, mais il est certainement là maintenant.

+0

Dans mon cas, cela n'a pas fonctionné. Il vient de renvoyer une chaîne vide. –

Questions connexes