PHPによるバッチ処理の一連の流れを知りたくて質問いたしました。


やりたいこととしては

http://www.samle.co.jp/index.phpにアクセスしたらバッチ処理を開始する。

test.sh(処理内容は/root/test/フォルダを作成すること)を実行する

こんな感じです。

「Apacheにはこういう設定をする」
とか
「PHPにはこういうスクリプトを書く」
とか
など、できるだけ具体的に書いていただけるとありがたいです。

よろしくお願いします。

【環境】
Fedora Core6 + Apache2.2 + PHP5

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/08/20 04:38:51
  • 終了:2007/08/20 23:54:16

回答(2件)

id:subweb No.1

subweb回答回数21ベストアンサー獲得回数02007/08/20 07:01:57

ポイント35pt

一連の流れといいますか、気をつける点をいくつか。

■PHPでは、system関数にて目的のプログラムを呼び出す。

今回の場合は、test.sh ですよね。

■test.sh が /home/user/test.sh にあれば

system("/home/user/test.sh"); となると思います。

■test.sh がWEBサーバ経由で実行されるため、

apache の起動ユーザが test.sh を実行できるパーミッションの設定が必要です。

基本的には、どのユーザでも test.sh を実行出来るようになっていればOKだと思います。

■WEB(PHP)からの入力で挙動が変わるようにする場合は、

PHP側で入力値のチェックなどが必要になるため、セキュリティ上の事を色々と気にかける必要があります。

■test.sh を実行するユーザが WEBサーバのユーザのため、

作成したいディレクトリの場所が、WEBサーバのユーザに権限がなければなりません。ここが一番見落としがちになるかと思います。

今回の場合、/root/test ディレクトリを作成するのでしたら、

/root 以下に、WEBサーバ実行のユーザが書き込める必要があります。

URLが必須になっているので、

system 関数で検索したページをはっておきます。

http://www.stackasterisk.jp/tech/php/php02_02.jsp

id:jun09

なるほどsystem関数を使うんですか!

ありがとうございます。やってみます!

2007/08/20 23:52:08
id:cooper0524 No.2

cooper0524回答回数296ベストアンサー獲得回数42007/08/20 11:49:41

ポイント35pt

実際にやってみました。

index.php

内容:

system ('/bin/sh /home/test/test.sh');


test.sh

内容:

mkdir /root/test

上記2つを作成し、Web上からindex.phpを実行したところ、

/root/testというディレクトリができました。

ディレクトリが作成される場所のパーミッションさえ問題なければ

大丈夫だと思います。

http://q.hatena.ne.jp/answer

URLはダミーです。

id:jun09

ありがとうございます。自分でもやってみます!

2007/08/20 23:52:58

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません