1 votos

Utilizar la captura de pantalla con PHP exec

No consigo que la captura de pantalla funcione cuando se activa con el comando exec().

$output = exec("/usr/sbin/screencapture -R 0,0,450,150 hehe.png"." 2>&1");
echo $output; //  in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO

No estoy seguro de lo que el $output mensaje está tratando de transmitir.

php.ini disable_functions está vacía.

Tengo la sensación de que esto es un problema de Osx. ¿Puede indicarme la dirección correcta para resolver este problema?

de captura de pantalla del hombre

SECURITY CONSIDERATIONS
     To capture screen content while logged in via ssh, you must launch
     screencapture in the same mach bootstrap hierarchy as loginwindow:

     PID=pid of loginwindow
     sudo launchctl bsexec $PID screencapture

No estoy usando ningún ssh. ¿PID de qué proceso se debe utilizar en este caso?

exec("sudo launchctl bsexec $PID screencapture -R 0,0,450,150 hehe.png");

2voto

sanjihan Puntos 343

Todo el mérito es de Patrix.

El problema se debe a que OSX impide que php script se ejecute screencapture de mando. OSX no tiene ningún problema si ejecuta su script manualmente, pero si se activa como respuesta a una petición GET o POST, entonces levanta la bandera roja.

Para solucionar esto se necesitan 3 pasos:

  1. Añadir permiso al usuario que está ejecutando httpd (y php) para ejecutar sudo launchctl sin contraseña. En mi caso es daemon . Lo obtuve del Monitor de Actividad. Editar /etc/sudoers con

    daemon ALL=(ALL) NOPASSWD: /bin/launchctl
  2. obtener el PID de loginWindow . puede utilizar ActivityMonitor para ello. El PID está sujeto a cambios por lo que a prueba de balas a ti mismo uso:

    pgrep loginwindow
  3. actualice su screencapture comando:

    sudo launchctl bsexec PIDNUMBERHERE screencapture [options] path/image.png

Vale la pena mencionar que el paso 1 añade un ligero riesgo de seguridad y probablemente no debería utilizarse en un entorno orientado a Internet (especialmente con una solución PHP donde todo el mundo puede leer fácilmente el código fuente).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X