2010-11-21 94 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