2009-04-30 8 views
27

Estoy en un sistema Linux externo y necesito determinar el usuario en el que apache se ejecuta (y también lo hace php).Obtener el usuario de apache linux de php

El objetivo: Necesito obtener el propietario de la secuencia de comandos (esto no es un problema, ya que puedo usar SplFileInfo) y compararlo con el propietario del proceso de apache.

Estoy abierto a cualquier propuesta alternativa.

Saludos, Mario

Editar: Otros detalles:

El guión es un generador de imágenes en miniatura, que utiliza un archivo XML para generar los pulgares de las imágenes más grandes. El script necesita crear carpetas y escribir archivos. Como no puedo influir en la configuración de php y no tengo ningún acceso de shell, esto tiene que hacerse de manera muy silenciosa. El proceso de creación se detiene a través de una excepción y envía un error de correo. Como la mayoría de las funciones de php no pueden arrojar excepciones en el error, necesito algunas verificaciones manuales para determinar el entorno en el que me encuentro. Por lo tanto, necesito que el usuario de apache lo compare con algún directorio o propietario de archivos.

+0

Como opción puede simplemente usar/tmp, que se puede escribir para todos. – Anonymous

+0

Eso no es útil para nuestro caso, ya que no podemos servir ninguna imagen generada desde fuera del docroot. –

Respuesta

52

Puede llamar a la función php exec para ejecutar whoami:

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

thanx grant! gracias a la anon., ambos métodos proporcionados aquí son muy adecuados. Usaré el método de grant, ya que no puedo afirmar que la función posix esté disponible. –

+1

exec() no funcionará si safe_mode está habilitado y whoami está fuera de safe_mode_exec_dir. – Anonymous

+0

absolutamente correcto, pero para mi entorno objetivo esta es la mejor solución. (no safe_mode;)) –

1

phpinfo volcará mucha información del sistema. Para las instalaciones de apache2, hay una sección que muestra el usuario de apache y los ID de grupo. Intente crear un script php que solo tenga una línea, una llamada a phpinfo() y ábralo en su navegador web.

+0

Ese no es el objetivo;) Sé cómo obtener el usuario a través de la información de php ... necesito adquirir los nombres como cadenas de un script. –

+0

... y analizar el phpinfo (INFO_MODULES) NO es una alternativa;) –

8

ver posix_getuid() y posix_getpwuid()

5

Algunas respuestas complicadas aquí.

Esto funciona para mí:

$user = getenv('APACHE_RUN_USER'); 

No estoy seguro si esto es sólo una cosa nueva que se ha añadido a Apache desde que se hizo esta pregunta, pero es definitivamente allí ahora.

+0

En mi caso, no funcionó. Simplemente devolvió una cadena vacía. –

Cuestiones relacionadas