Estoy escribiendo una aplicación web simple en PHP que necesita tener acceso de escritura a un directorio en el servidor, si el directorio no se puede escribir Quiero mostrar un mensaje de error explicando para configurar el propietario del directorio a quien sea el el servidor web se está ejecutando como (por ejemplo, www-data, nobody) pero como la mayoría de la gente no sabe esto, sería bueno poder decirles a quién debe asignarle el directorio. ¿Es posible encontrar esto desde PHP?¿Puedo encontrar a qué usuario se está ejecutando el servidor web como en PHP?
Respuesta
Salida shell_exec()
Si puede ejecutar alguna fiesta, se puede utilizar whoami
o usted podría ser capaz de hurgar en /proc
El truco rápido y sucio-yo uso es para escribir un archivo a /tmp/
. Se debe crear con el usuario y el grupo utilizado por el proceso de PHP.
Ese mensaje de error se desmorona en un entorno de servidor de Windows. "Por favor, asegúrese de que el servidor web tenga acceso de escritura al directorio" probablemente sea un mejor mensaje de error.
Si en Linux/Unix:
<?php
$temp = tmpfile();
print_r(posix_getpwuid(fileowner($temp)));
?>
<?php
echo exec('whoami');
?>
Lo estoy usando pero no imprime nada. –
en plataformas UNIX, esta solución podría funcionar incluso con el modo seguro en adelante, siempre que la extensión POSIX se instala o se compila en
$user = posix_getpwuid(posix_geteuid());
echo $user['name'];
.
Los documentos son here.
- 1. ¿Qué usuario está ejecutando Apache como en Windows?
- 2. ¿Qué usuario está ejecutando mi aplicación Rails?
- 3. ¿Por qué Apache está ejecutando archivos .php.html como PHP?
- 4. ¿Cómo verificar si el servidor X se está ejecutando?
- 5. Determinar desde el código de qué usuario mi proceso se está ejecutando como
- 6. ¿Qué iniciador se está ejecutando?
- 7. ¿Cómo puedo averiguar qué script PHP se está ejecutando en Linux?
- 8. ¿Cómo puedo probar si R se está ejecutando como Rscript?
- 9. ejecutando gdb en un servidor web
- 10. ¿Cómo puedo encontrar en qué sistema operativo se está ejecutando mi programa Ruby?
- 11. Ejecutando PHP 5.4 servidor web incorporado fuera de localhost
- 12. encontrar un trabajo si se está ejecutando en Quartz1.6
- 13. dispositivos IOS como servidor web
- 14. En ColdFusion, ¿hay alguna manera de determinar en qué servidor se está ejecutando el código?
- 15. Cómo saber si el servidor de emacs se está ejecutando
- 16. Cómo encontrar si el servidor de solr se está ejecutando o no
- 17. ¿Cómo encontrar el puerto local en el que se está ejecutando una instancia de raíles?
- 18. El servidor web no pudo encontrar el recurso solicitado
- 19. Ejecutando código ruby proporcionado por el usuario en un servidor web
- 20. eclipse stop popup "Lanzamiento web ya se está ejecutando"
- 21. Ejecutando dart en un servidor web
- 22. ¿Se está ejecutando el hilo Java en qué procesador?
- 23. Ejecutando comandos a través de scripts PHP/Perl como usuario privilegiado en Linux
- 24. Compruebe si un script php todavía se está ejecutando
- 25. ¿Cómo puedo saber bajo qué versión de IIS se está ejecutando mi aplicación Asp.Net?
- 26. Selenium 2: ¿Cómo comprobar que el servidor se está ejecutando y detener el servidor?
- 27. no se puede ejecutar oowriter como usuario web
- 28. ¿Puedo determinar si Matlab se está ejecutando como con privilegios elevados en Windows?
- 29. TFS 2010 API, determine en qué servidor de compilación se está ejecutando una compilación.
- 30. ¿Cómo puedo detectar si el usuario está en localhost en PHP?
Esta es una pregunta muy similar a http://stackoverflow.com/questions/805907/get-apache-linux-user-from-php. Puede encontrar su respuesta allí también. – zombat