内部R&Dプロジェクト用のWebページスクリーンキャプチャアプリケーションを構築しています。
環境:Ubuntu 9.04(デフォルトのデスクトップインストール)、Apache、PHP。
これまでのところ、1つのパラメーター(URL)を受け取り、Firefoxを起動し、画面を取得してPNGとして保存するbashスクリプトがあります。これをターミナルから実行してみましたが、正常に動作します。
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エラーログをざっと見ると、次のメッセージが表示されます。
Error: no display specified giblib error: Can't open X display. It *is* running, yeah
これは、apacheが別のユーザーとして実行されていて、Xディスプレイにアクセスできないためだと思います。
だから、誰かが私が間違っていることや、現在のユーザーディスプレイをキャプチャする方法に光を当てることができますか?
ありがとう。