我正在为一个内部研发项目构建一个网页屏幕捕捉应用程序。
环境:Ubuntu9.04(默认桌面安装)、Apache、PHP。
到目前为止,我已经有了一个bash脚本,它接受一个参数(URL),启动firefox,抓取屏幕并将其保存为PNG。我试过在终端机上运行这个,它运行得很好。
下面是Bash脚本:
#!/bin/bash
firefox $1 # Start firefox and go to the passed in URL
scrot -d 5 test.png # Take screen grab with 5 second delay接下来,我创建了一个使用shell_exec运行脚本的简单PHP页面:
<?
// Sample URL
$url = 'http://www.google.com';
// Run the script
shell_exec('sh script.sh ' . $url);
// Out put HTML to display image
echo '<img src="test.png" />';
?>但是,当PHP页面被调用时,屏幕不会被捕获。快速查看apache错误日志将显示以下消息:
错误:没有显示指定的字形错误:无法打开X显示。它在跑,是的
我猜这是因为apache作为一个不同的用户运行,无法访问我的X显示器。
所以,有人能说明我做错了什么,或者我如何捕捉当前用户的显示。
谢谢。
发布于 2009-07-23 10:38:18
在我看来,从在Apache环境下运行的PHP中启动firefox似乎是个坏主意(这肯定让人觉得不对)。
我会这么做的:
有了这个系统,有几个优点:
这并不是问题的真正答案,但我认为这是一个更好的方法.希望这能帮上忙!
发布于 2009-07-23 11:44:19
下面是一个使用火狐和xvfb进行屏幕捕获的指南。这种方法的优点是在您的主X服务器上不会有firefox窗口打开和关闭。它还将解决您的权限问题。
发布于 2009-07-23 10:06:21
您不能以与apache相同的用户身份运行bash和firefox吗?
https://stackoverflow.com/questions/1170773
复制相似问题