仮想フレームバッファXvfb上でfirefoxを実行したいが、Gtk-WARNING **: cannot open display: となる

このQ&Aのポイント
  • 仮想フレームバッファXvfb上でfirefoxを実行すると、Gtk-WARNING **: cannot open display: というエラーが発生してしまいます。
  • ssh接続したターミナル上でimportコマンドで画面キャプチャを取得しようとすると、指定したページが表示されず、エラーが発生します。
  • CLI版のPHPを直接動かす方法でも同じエラーが発生してしまいます。お力を貸していただけませんでしょうか?
回答を見る
  • ベストアンサー

仮想フレームバッファXvfb上でfirefoxを実行したいが、 Gtk-WARNING **: cannot open display: となる

.shから php test.php とし、以下のスクリプトをroot権限としてcrontab経由で実行しています。 <?php $CapAddr = 'http://google.com'; system('firefox -display :1 -remote "openurl(' . $CapAddr . '), new-window"'); ?> ところが、ssh接続したターミナル上でimportコマンドで画面のキャプチャを取得して開いてみると 指定したページが表示されていません。吐いているエラーを見ると、 (firefox-bin:6340): Gtk-WARNING **: cannot open display: となり、実行に失敗しています。 ssh接続した所で直に打ち込めば何ら問題なく言うことを聞いてくれるのですが、 shell script上で php /home/htdocs/WebPageCapture.php とするとまたしても同じエラーを吐きます。 次はやり方を変えて、呼び出さずに直接CLI版のPHPを動かす方法を試しました。 #!/usr/bin/php <?php で始まる、同一のコードです。 すると再び、同じ (firefox-bin:7802): Gtk-WARNING **: cannot open display: のエラーが発生してます。 terminalで同じ事をすると上手く行くだけに困っています。 お力を貸していただけませんでしょうか、よろしくお願いいたします 接続元:Mac OSX Tiger 接続先サーバ環境:CentOS4.2 # ps ax | grep Xvfb /usr/X11R6/bin/Xvfb :1 -screen 0 1024x2048x24

  • bunch
  • お礼率82% (251/303)

質問者が選んだベストアンサー

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.1

これで上手くいくかどうかは知りませんが、 >cannot open display: と言っているようだから、 >system('firefox -display :1 -remote "openurl(' . $CapAddr . '), new-window"'); の前に putenv("DISPLAY=:1.0"); してみるというのはどうでしょう。

bunch
質問者

お礼

なるほど、さすがです。出来ました。 phpからは環境変数をなぜか取ってきてくれないようですね・・・。 export DISPLAY=:1.0 とした後にapacheと一緒に動き出しているphpを再起動していなかったので /etc/init.d/httpd restart とするともしかすると環境変数を読み取ってくれるのかもしれませんが。 ひとまず、うまくいきました。ありがとうございます。

関連するQ&A

  • geditについて

    fstabを編集するため # sudo gedit /etc/fstab と打ち込んだところ (gedit:5386): Gtk-WARNING **: cannot open display: と返されてしまいます。 なぜ開けないのでしょう?

  • Gtk-WARNING

    Windows XPを積んだノートにWubiを導入し、そこからsshでFC5にリモートログインして、作業をしようとしています。 ところが何かのウィンドウを立ち上げるような操作をすると、 Gtk-WARNING **: cannot open display: というエラーを吐いて、実際にXを飛ばすのに失敗します。 あるいはEmacsを立ち上げると、 Cannot connect to X server localhost:10.0 というエラーが出ます。 そのほかにも can't open display "localhost:10.0" というのも目にしました。 Xが飛んでいないのだろうと思い、クライアント側でxhost +を実行してみた所、 access control disabled, clients can connect from anyhost となっていて、ここは問題なさそうです。 何か良い方法をご存じの方がいらっしゃいましたら、ぜひご教授下さい。

  • etherealについて

    はじめまして。 redhatLinux6.2にethereal-0.8.14-1をインストールしたのですが、 起動時に以下のようなエラーが出ます。 ------------------------------------------ The plugin : gryphon.so, version 0.0.1 was found in multiple directories The plugin : mgcp.so, version 0.0.1 was found in multiple directories Gtk-WARNING **: cannot open display: ------------------------------------------ リモートでsshでログインしてインストール、起動を行いました。 インストール手順、起動の仕方を教えて下さい。 宜しくお願い致します。

  • さくらインターネットでSVNエラー

    さくらインターネットへのSubversionの設置の仕方はググるといくらでも出てくるので、その通りにインストールしました。 外部からの接続確認をしようとローカルマシン(MacBook Pro OS X 10.7.3)のターミナルから svn info svn+ssh://section-9@section-9.sakura.ne.jp/home/section-9/svn/reps を実行したところ、 ( failure ( ( 2 86:Error in child process: posix_spawn of 'usr/bin/ssh' failed: No such file or directory 84:/SourceCache/subversion/subversion-44.1/subversion/subversion/libsvn_ra_svn/client.c 457 ) ) ) svn: Can't create tunnel: No such file or directory と言うエラーが返却されて接続できません。 ぱっと見たところ、usr/bin/sshが見つからないと言っているように見えます。実際のパスは/usr/bin/sshです。 どうすれば接続できるでしょうか?

  • PEARをfedoraで使いたい。

    こんばんは。 PHPのPEARを、fedoraサーバーで使いたいと思っているのですが、 うまくいかないので質問させてください。 まず、コマンドプロンプトで、pear と打つと、どこで打っても、 /usr/local/bin/php: error while loading shared libraries: libmysqlclient.so.14: cannot open shared object file: No such file or directory というエラーが出ます。 これが主な原因かと思うのですが、対処法を調べましたがよくわかりません。。 このエラーが出ないようにするにはどうすればよいでしょうか? phpinfo.php  での情報は、 include_path  が、.:/usr/share/pear which pear コマンドでは、 /user/local/bin/pear でした。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • crontabでPHPスクリプトが実行出来ない

    crontabで毎分PHPのスクリプトを起動する記述をしましたが、すべて下記エラーが出て実行されません。 phpスクリプトの先頭で「#!bin/usr/php」を書く方法と、crontabで「* * * * * /usr/bin/php test.php > dev/null」とする方法を試してみましたが両方ともダメでした。 解決索があればご教示下さい。 【エラー内容】 test.php: line 1: ?php: No such file or directory

    • ベストアンサー
    • PHP
  • PHP4.2.2 + MySQL4.1.12 にてWarning

    現在ホスティングでPHP,MySQLを使って勉強しながらプログラムを作成しています。 MySQLに接続する際にエラーログに以下のメッセージが表示されてしまいます。 PHP Warning: Unknown(): Unable to load dynamic library '/usr/local/lib/php/extensions/current/mysql.so' - Cannot open &quot;/usr/local/lib/php/extensions/current/mysql.so&quot; in Unknown on line 0 ログイン自体は出来ていて、処理も正常に動作しているように見えるのですが、このメッセージは何を意味するものでしょうか? 以下のようなスクリプトを実行するだけでエラーログに表示されています。 <?php $hostname = "localhost"; $user = "AAAAAAAA"; $password = "XXXXXXXX"; $res = mysql_connect($hostname, $user, $password); mysql_close($res); ?> サーバー会社に問い合せたらスクリプトを確認するように言われたのですが、お手上げになってしまいました。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Linuxで、Pearコマンドが使えない。

    こんばんは。 Linuxにて、Pearを使いたいのですが、 #/usr/local/bin/php にて、pear upgrade PEAR と打つと、 error while loading shared libraries: libmysqlclient.so.14: cannot open shared object file: No such file or directory となってしまいます。 色々調べたところ、libmysqlclient.so.14 がないことが原因のようなのですが、libmysqlclient.so.14 をどこからどうやってインストールし、使えるようにすればよいか分かりません。 ただ、 libmysqlclient.so.15 は、 /usr/lib/mysql 内にありました。 よろしくお願いします!

    • ベストアンサー
    • PHP
  • phpのpearが使えない

    いつも参考にさせて頂いています。 pearコマンドが使えなくなってしまいました。シェルでpearと打つと下記エラーが発生します。 【エラー内容】 Warning: require_once(PEAR.php): failed to open stream: No such file or directory in Config.php on line 27 【原因】 おそらく、PEARディレクトリを移動させてしまったからだと思います。 なので、/usr/bin/pearをviで下記のように変更した所、上記エラーが発生しました。 include_pathを/usr/share/php ⇒ /usr/local/php pearを再インストールすれば改善されるでしょうか? できれば再インストールする際の手順なども教えて頂けると嬉しいです。(参考URLでも全然OKです。 それともPEARディレクトリを移動させても問題なく動作させる方法があるでしょうか?どうか宜しくお願いします。

    • ベストアンサー
    • PHP
  • シェルスクリプト初心者です、以下のシェルを見てくだ

    お世話になります。 CentOS5にて、ディレクトリ「/home/user」からリモートホスト「192.168.11.200」の「/home/user」へ sshの鍵方式を使い、SCPで画像のコピーを行うシェルスクリプトを書きました。 以下のシェルスクリプトを書いたのですが、3行目の「/usr/bin/scp」が引っかかって 「/home/user/move_img.sh: line 3: `/usr/bin/scp -P 22 -i "/home/user/.ssh/id_rsa" -r ${FILE} user@192.168.11.200:${FILE};'」 とのエラーが出てしまいます。 素人のくせにシェルなんて書くなと言われればそれまでですが、 一体どの記述が悪いのか見当がつきません。 ご教授をお願いいたします。 ------ #!/bin/sh for FILE in `find /home/user -regex ".*\.\(jpg\|png\|gif\|JPG\|GIF\|PNG\)"`; /usr/bin/scp -P 22 -i "/home/user/.ssh/id_rsa" -r ${FILE} user@192.168.11.200:${FILE}; done ------