dポイントプレゼントキャンペーン実施中!

こんにちは。
PHP初心者です。
環境はWindousXP PHP5 DBはPostgre(多分。)です。

今、PHPでexecを使って外部プログラムを走らせたいのですが、失敗しているようで、戻り値はなにしても1が返ってきます。

処理としては、
(PHP)
$bat = 'C:/Documents and Settings/Administrator/デスクトップ/test/test.bat'
exec($bat, $out, $ret);
echo $ret;

(batの中身)
sqlplus id/pass@test @"C:/Documents and Settings/Administrator/デスクトップ/test/処理.txt"

(処理.txtの中身)←coldfusionで書かれています。
-- 対象外のデータを削除する
delete from table where knd = 0;
commit;
exit;

という感じです。

わざと処理.txtの中身を壊したり、execではなくsystemやpassthruを使ったり色々試しましたが、$retは1のままで、$outの中身もないので実行されてないような気がします。
なぜ実行されないのか、処理.txtが正常に実行されたのか戻り値を取得したいです。。

とても初歩的な質問で申し訳ないのですが、ご教授よろしくお願いします。

A 回答 (2件)

なんとも言えませんが、webインタフェースでbatファイルを実行


するのはどうかと・・・

普通に、RDBにアクセスするという選択はないのでしょうか?

この回答への補足

返信ありがとうございます。

確かに変なやり方かもです;
sqlplusをなんとか実行できないかな~と思っていました。

補足日時:2009/07/09 19:10
    • good
    • 0
この回答へのお礼

初心者なもので、つまらない質問をしてしまいました。
おつきあいくださってありがとうございました!

お礼日時:2009/07/09 19:35

var_dump($hoge)を使って、デバッグ(風)に変数の中身を確認しながら進めてみてはいかがでしょう?

この回答への補足

返信ありがとうございます。
var_dumpはPHPの中で使うということでしょうか?
$retはint(1)、$outはからっぽです;;

coldfusionのソースは以前から使われているもので、一連の処理をPHPで一括化しようと思い、PHPに組み込んでいます。
coldfusionはサッパリわかりません。。

補足日時:2009/07/09 17:50
    • good
    • 0
この回答へのお礼

DOSのコマンドを実行したDOS配下にbatファイルを置いたらうまくいきました!

今思うと当然か~て感じですが、事前にbatファイルの実行場所にcdしておかなかったのが原因でした;
(bat自体動いてなかったようです。)

ありがとうございました!

お礼日時:2009/07/09 19:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!