人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

やりたいこととしては

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

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

こんな感じです。

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

よろしくお願いします。

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


●質問者: jun09
●カテゴリ:インターネット ウェブ制作
✍キーワード:Apache Fedora Core PHP root sh
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● subweb
●35ポイント

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

■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

◎質問者からの返答

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

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


2 ● cooper0524
●35ポイント

実際にやってみました。

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はダミーです。

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ