我有一个以下的PHP脚本 -
<?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 :(得分:1)
您正在使用的库正在尝试建立与xserver的连接以呈现png。这在终端上工作正常,因为你有一个可用的连接,但是会因sS或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);
答案 1 :(得分:0)
你应该使用像/usr/local/php53/bin/php
答案 2 :(得分:0)
如果您没有被迫使用python并且可以安装其他内容,我建议http://phantomjs.org/。它在制作网页截图方面更好,更强大,不需要xserver(但是node.js)