Pregunta

Estoy trabajando en una aplicación que se ejecuta localmente en una máquina Fedora 10 a través de PHP y Apache. Depende de un proceso que se ejecute en segundo plano.

Los superiores quieren poder iniciar / detener / reiniciar el proceso, a través del navegador. Estaba tratando de hacer que esto funcione haciendo que PHP haga llamadas al sistema usando exec () y shell_exec, pero parece que no funciona.

Cuando intento iniciar el proceso con " exec ('processName') " ;, no sucede nada.

Cuando intento usar " exec ('killall processName') " ;, SELinux comienza a aparecer constantemente advertencias de que el proceso fue permitido (porque lo puse en modo permisivo), sin embargo, en realidad no mata el proceso ! ¡Pero esto parece continuar incluso después de que la página esté completamente cargada!?!?

PUEDO llamar a otro script de manera similar: " exec ('/ var / www / cgi-bin / ControlProgram START') " ;. Así que no estoy realmente seguro de cuáles son las principales diferencias entre las dos llamadas / comandos.

También puse la llamada del script en el archivo /etc/rc.local para que el script se ejecute al iniciar sesión. Sin embargo, ¿podré matar este script desde PHP ya que es ejecutado por ... el sistema?

No soy un gurú en lo que respecta a permisos / SELinux, ¡así que no pierdas los detalles sangrientos! Gracias de antemano!

¿Fue útil?

Solución 2

Creo que encontré el problema. Todavía no estoy exactamente seguro de cuál es el problema, pero parece que tiene algo que ver con los permisos de archivo / directorio. Cuando moví los scripts a mi directorio / var / www / html, se ejecutaron los scripts. Los moví a / var / www / cgi-bin y también funcionan allí. Por lo tanto, podría ser algo en lo que apache no pueda ejecutar scripts que estén fuera del directorio / var / www, o al menos no puede hacerlo directamente. ¡Gracias por tu ayuda!

Otros consejos

Si tiene control administrativo sobre este sistema, querrá verificar la configuración de PHP (asegúrese de que sea el perfil de configuración para el servidor web).

Safe_Mode evitará que PHP ejecute cualquier cosa fuera de una carpeta en particular. En un entorno de alojamiento compartido, esto generalmente significa que solo puede ejecutar cosas relacionadas con su carpeta home / www, que parece ser el caso en función de sus notas.

Suena como los permisos de Unix de la vieja escuela y cómo funciona Apache. Recuerdo (aunque ha pasado algún tiempo) que Apache tiene cuidado con lo que ejecutará. Verifique sus octales.

Para verificar que no es SELinux, puede desactivarlo en lugar de ponerlo en permisivo. aunque esto hará que se vuelva a etiquetar el sistema de archivos (o debería hacerlo). En ese momento, sus atributos extendidos con los contextos de SELinux podrían salirse de control y causar problemas de SELinux una vez que se vuelvan a aplicar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top