2012-06-18 16 views
10

¿Cómo determinamos en qué usuario se ejecuta el script php cuando ejecuto el script en el servidor? ¿Se ejecuta bajo el mismo usuario que apache o phpmyadmin por casualidad? Mi pregunta tal vez enmarcada erróneamente, pero me gustaría saber qué usuario de modo que el conjunto de permisos apropiados para diferentes carpetas en/var¿Cómo puedo averiguar cuál es el usuario que ejecuta el script php actual?

+5

Google 'php determine user' le dará la información necesaria –

+0

+1 yfgi .... (http://www.php.net/manual/en/function.get-current-user.php#57624) – Wrikken

+0

Tendrás que proporcionar más información para que podamos ayudarte aquí, me temo. – crmpicco

Respuesta

20

Ejecutar whoami:

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

Hmm segunda persona downvote después de haber sido editado. Tal como está, esto funciona, ver http://stackoverflow.com/questions/7771586/how-to-check-what-user-php-is-running-as – jpiasetz

+1

Hehe, editado solo para poder quitar mi downvote (está bloqueado después de un cierto tiempo ..) – Wrikken

+0

Gracias :). Realmente no me quejaba del tuyo. Estabas en lo cierto jeje. – jpiasetz

-4

Utilice esta:

$_SERVER['REMOTE_USER']; 

esta variable puede o no puede establecerse.

+3

Esto no es lo que el OP quiere Quiere saber el * sistema * usuario –

7

Si tiene posix functions disponible (habilitado por defecto), puede utilizar posix_geteuid y posix_getpwuid para obtener el nombre del usuario (al menos en entornos que no sean Windows), así:

$pwu_data = posix_getpwuid(posix_geteuid()); 
$username = $pwu_data['name']; 

Otro (más caro) manera de hacerlo sería utilizar una función de shell a ejecutar como exec para ejecutar whoami:

$username = exec('whoami'); 

o incluso los acentos abiertos (aunque es posible que tenga que recortar el salto de línea apagado):

$username = `whoami`; 

Yo personalmente solo he necesitado siempre para obtener el nombre de usuario del usuario que ejecuta el script para los scripts PHP que se ejecutan en el shell (en la línea de comandos). Normalmente, las secuencias de comandos que se ejecutan en el proceso de generar la respuesta a una solicitud que el servidor web está manejando se ejecutarán como el usuario del servidor web, como www-data, apache, etc. En Apache, el usuario que ejecuta el apache/Los procesos httpd se configuran con la directiva User.

-3

Utilice esta:

echo get_current_user(); 

asegúrese de leer los comentarios, porque parece que esta respuesta en realidad no hace lo que quiere.

+5

Este es en realidad el "propietario del script PHP actual" según http://php.net/manual/en/function.get-current-user.php –

0

No utilice "whoami". Cuando ejecuta un proceso, el usuario no necesariamente será el mismo que el usuario efectivo durante la ejecución de un script. Pero en cualquier caso, "id" proporcionaría información mucho más útil. En su lugar, llame a get_current_user(). ¡Tan sencillo!

Cuestiones relacionadas