[PHP-users 25682] Re: PHPからのMagicpointの起動

NAKAMURA Takeshi 1yen @ sh.rim.or.jp
2005年 5月 26日 (木) 21:02:08 JST


仲村@どしろーとです。


On Wed, 25 May 2005 19:01:56 +0900,
 Kenta Tanaka <tanaka05 @ ns.cradle.titech.ac.jp> wrote:

 私がデバッグするならということで...
> ---
> <?php
  <!-- ● カレントディレクトリを表示 realpath(".") -->
> $count = (int)$_POST['count'];
> $proga = htmlspecialchars($_POST['proga']);
> if ($count > 999 || $count < 1) {
> echo "<p><em>ファイル名エラー</em>: $count";
> } elseif (($proga == "mgp" || $proga == "mgpnet") && $_POST['text'] != "") {
  <!-- ● work ディレクトリがあるか確認する file_exists()-->
> $f = fopen("work/$count.mgp", "w");
  <!-- ● fopen() が成功したか確認する if(!$f){echo "fopen() エラー";exit} とか。-->
  <!-- ● echo "Filename: work/$count.mgp <br>" する。
> fwrite($f, $_POST['text']);
> fwrite($f, "\n");
> fclose($f);
  <!-- ● 実行後 work/$count.mgp というファイルがあるか確認する -->
> echo "<p><tt>$proga $count</tt>\n";
> exec("(./runmgp $count.mgp;) > /dev/null &");
  <!-- ●./runmgp をフルパスに書き換える
         (例えば、PHP スクリプトのパスから絶対パスを生成 sprintf("%s/%s",dirname(__FILE__),"/runmgp")) -->
  <!-- ●「> /dev/null」ではなく、「> /tmp/log.file 2>&1」として、
         実行後に /tmp/log.file の中身を見る。 -->
  <!-- ●実行に時間がかからないのであれば、バックグラウンドに送ることをやめて
         終了ステータスを確認 -->
  <!-- ●(必要なら数秒待って)work/tmp.jpg.0 というファイルが
         あればリンクを生成。file_exists()とか。
         ファイルが無ければ(用途によって) /tmp/log.file や、適当な
         エラーメッセージを表示 -->
> echo "<p><a href=\"work/tmp.jpg.0\">スライド</a>\n";
> }
> else { echo "<p><em>エラー</em>: $proga\n";
> }
> ?>
> ---

shell script の先頭は、以下のようにして実行ログを取得。
実行後に確認。
ついでに、変なコマンドを起動したくないので PATH も設定。
#!/bin/bash -x
exec > /tmp/log.log 2>&1
PATH=/bin:/sbin:/usr/bin:/usr/sbin ; export PATH


 さらに PHP から外れて...
> #本当はウィンドウを開きたいけど、うまくいかないので画像に変換

 DISPLAY 環境変数と xauth の設定次第で何とかなりそうな気がします。
http://www.cc.kyushu-u.ac.jp/scp/system/manual/etc/x_server.html

 apache 等、php を実行する専用ユーザに分離し(nobody など、他でも
使われそうなアカウントを使ってはいけないということ)、
ホームディレクトリを作成する必要があると思いますが...
CGI モード+ apache の suexec で済ますという手もあります。

  また http://xjman.dsl.gr.jp/man/man1/xauth.1x.html を見ると
XAUTHORITY 環境変数を設定すればホームディレクトリは無くても
良さそうです。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
 仲村 武 <1yen @ sh.rim.or.jp>




PHP-users メーリングリストの案内