PHP执行Bash脚本只返回黑色屏幕截图

时间:2010-11-21 19:40:42

标签: php linux apache bash screenshot

您可能很熟悉网站缩略图服务,例如websnapr.com,例如

我目前正在开发具有不同目的的类似东西,所以我需要一台服务器来启动带有网址的web浏览器并截取屏幕截图并转到下一个。

这是我通过bash script.sh执行的bash脚本'http://google.nl'/var/www/images/google.png

#! /bin/bash
export DISPLAY=":4"
killall firefox-bin
/usr/bin/firefox --display :4 "$1" &
/bin/sleep 20
xte "key F11"
/bin/sleep 3
/usr/bin/import -window root -display :4 "$2"
/bin/sleep 3
killall firefox-bin

我有一个Xvfb运行'Xvfb:4-screen 0 1024x768x24&'

脚本在通过ssh或标准用户的终端运行时运行正常,但是当我尝试通过php执行它时:

exec('bash /var/scripts/test.sh "http://google.nl" /var/www/char.png');
我得到的是1024x768的全黑屏幕截图,当查看apache的错误日志时,我发现当我在主用户​​下运行时它不能killall firefox(权限不允许)但是即使关闭它也可以开始一个(没有给出错误)。

知道什么是错的吗?理想情况下,因为它适用于我的主要用户,它只是希望能够作为该用户而不是www-data用户执行它,安全性不是问题,因为没有直接连接到该服务器(仅通过另一个服务器)同一个网络)。

1 个答案:

答案 0 :(得分:3)

从Apache运行的应用程序不能很好地访问X11也就不足为奇了。我会使用xvfb + xvfb-run

另一方面,在极端情况下玩xte时很好,但是当你有干净的解决方案时,它会有点笨拙;尝试像cutycapt或类似的项目。