2013-02-27 64 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

相關問題