2010-11-21 82 views
2

您可能熟悉websnapr.com等网站缩略图服务。PHP执行Bash脚本只返回黑色屏幕截图

我目前正在处理类似于不同目的的东西,所以我很需要一个服务器,它会启动一个带有url的webbrowser截取屏幕截图并转到下一个。

这是我用的bash script.sh '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 

执行bash脚本,我已经通过运行的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用户的身份执行它,安全性不是问题,因为不会直接连接到该服务器(仅通过另一台服务器同一个网络)。

回答

3

从Apache运行的应用程序无法很好地访问X11并不奇怪。我会用xvfb + xvfb-run

另一方面,在极端情况下使用xte时没问题,但如果您有干净的解决方案,则会有点不方便;尝试像cutycapt或类似的项目。

+0

问题是,我确实需要渲染Flash内容,据我回忆,那些是他们不支持的内容? (指的是cutycapt) – M0rph3v5 2010-11-21 20:04:26

+0

+1表示CutyCapt,我正要推荐相同的。 – icanhasserver 2010-11-21 20:17:02

+0

@ M0rph3v5:试试吧,让我们知道。虽然我不明白为什么Flash内容不应该呈现。 – tokland 2010-11-21 20:21:34