2012-06-26 9 views
6

Estoy intentando que PhantomJS se ejecute a través de PHP.PhantomJS no funciona en PHP a través del navegador (pero lo hace a través de la línea de comandos, e incluso ejecutando PHP a través de la línea de comandos)

Cuando ejecuto el archivo JavaScript directamente a través de la línea de comandos, funciona bien. Cuando ejecuto php render_html.php en la línea de comandos, que solo ejecuta un comando exec(), funciona bien. Sin embargo, cuando intento abrir este archivo php en el navegador, no hace nada. Ni siquiera recupero nada para hacer eco.

He hecho todas estas pruebas localmente en OS X y en mi servidor EC2, y obtengo el mismo resultado.

+0

Sé que es un camino hacia atrás, pero estoy teniendo exactamente el mismo problema, pero en CentOS. ¿Asumo que la sintaxis del archivo sudoers en CentOS sería diferente? – TomCDona

+0

Hola. Trasladé su apéndice de respuestas a una respuesta adecuada, por lo que las personas que acceden a Stack Exchange a través de la API obtienen la separación Q/A correcta. Si desea hacer su propia respuesta, hágalo y eliminaré mi propia versión de CW. – halfer

Respuesta

0

Puede ser un problema de permiso, compruebe si el usuario que ejecuta el servidor web tiene permiso para ejecutar el ejecutable phantomjs.

+1

Revisé los permisos en el ejecutable. Eran 755, lo cual debería ser suficiente. Cambió a 777, y todavía nada. Gracias, sin embargo. – bearfriend

0

(Publicado en nombre de la OP).

Parece haber sido un problema de permisos. Parece que Apache puede ser tratado de una manera un poco diferente que otros usuarios? A pesar de que los permisos estándar permitirían a cualquier usuario acceder a la aplicación PhantomJS, apache aún no pudo.

Cualquier persona con problemas similares debe leer this question and the answers.

Aquí está mi solución ligeramente adaptada para mi caso específico (en el servidor Linux). Editar el archivo sudoers (/ etc/sudoers) para incluir la siguiente línea:

apache ALL=NOPASSWD: /usr/bin/phantomjs 

Lo hice con emacs, (C-x C-q para permitir la edición del archivo de sólo lectura). No parecía tener ningún problema con eso, pero creo que se recomienda usar algo llamado visudo para editar sudoers. Emacs funcionó para mí, pero deberías buscarlo.

Esto le dio al usuario apache acceso explícito a la aplicación PhantomJS al otorgarle acceso sudo, limitado solo a la aplicación PhantomJS.

-1

Recientemente trabajé con phantomjs en el entorno centos 7 y tuve el mismo problema que op. Probé soluciones y métodos que encontré en stackoverflow uno encima del otro, por lo que no estoy muy seguro de qué método ha funcionado o qué métodos han trabajado juntos para resolver el problema. Probé

  1. dando 777 permiso para PhantomJS js binarios y de destino y que contiene el directorio (no funcionó)
  2. visudo y dar permiso a Apache para utilizar PhantomJS sin contraseña (no funcionó)
  3. añade Apache al grupo sys (no funcionó)
  4. deshabilitado selinux después de deshabilitar selinux y reiniciar cent os, phantomjs comenzó a funcionar en el navegador. : D: D
Cuestiones relacionadas