2013-02-27 119 views
0

我有下面的PHP脚本 -从PHP脚本运行webkit2png工作在终端,而不是在浏览器

<?php 
$command = "python webkit2png/webkit2png -D screenshots http://stackoverflow.com"; 
$command = escapeshellcmd($command); 
system($command); 

当从终端通过

php test.php 

方式运行它产生的网站截图但是,在浏览器中打开test.php并不会带来任何结果。

python和php脚本都属于_www用户,在其下运​​行apache。我甚至尝试在终端下的_www下运行test.php,它仍然有效。有什么我失踪?

感谢@amccausl我发现这在Apache日志 -

Wed Feb 27 07:12:03 mini.local python[83331] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged. 
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL. 
Traceback (most recent call last): 
    File "webkit2png/webkit2png", line 353, in <module> 
    if __name__ == '__main__' : main() 
    File "webkit2png/webkit2png", line 324, in main 
    AppKit.NSBorderlessWindowMask, 2, 0) 
objc.error: NSInternalInconsistencyException - Error (1002) creating CGSWindow 
+0

您应该检查您的apache错误日志。但是你也可以尝试在你自己的盒子中运行命令行(以隔离任何试图渲染webkit时没有连接终端的问题)。 – amccausl 2013-02-27 03:26:48

回答

0

你应该使用绝对路径类似/usr/local/php53/bin/php

+0

绝对路径在哪里需要使用,并完成什么? – jogojapan 2013-02-27 03:47:25

+0

你的python cmmond路径应该是绝对路径 – 2013-02-27 06:00:01

+0

其实,我使用绝对路径为php -/usr/bin/php,但不是python。我尝试使用/ usr/bin/python(这是它的路径),但没有运气...... – 2013-02-27 12:14:37

1

您所使用的试图建立到Xserver的连接库呈现一个PNG。这在终端上工作正常,因为你有一个可用的连接,但会因ssh或apache会话而中断,因为它们不会。

您可以创建一个供他们使用与xvfb

this question使用的方法是你(你可以忽略的解决方案)一个很好的例子。

<?php 
$command = "xvfb-run -a -s '-screen 0 640x480x16' python webkit2png/webkit2png -D screenshots http://stackoverflow.com"; 
$command = escapeshellcmd($command); 
system($command); 
+0

我发现了几个不同版本的xvfb-run脚本,他们都没有工作。试图找出它... – 2013-02-28 23:20:59

+0

似乎无法在OS X – 2013-03-18 15:39:52

0

如果你没有被迫使用Python和可以安装别的东西,我建议http://phantomjs.org/。它在制作网页截图时更好更强大,并且不需要xserver(但node.js)

+0

下工作谢谢,我会考虑 – 2013-03-18 15:40:24

相关问题