• 締切済み

外部プログラム実行時の戻り値

こんにちは。 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が正常に実行されたのか戻り値を取得したいです。。 とても初歩的な質問で申し訳ないのですが、ご教授よろしくお願いします。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

なんとも言えませんが、webインタフェースでbatファイルを実行 するのはどうかと・・・ 普通に、RDBにアクセスするという選択はないのでしょうか?

harelip
質問者

お礼

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

harelip
質問者

補足

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

  • sykt1217
  • ベストアンサー率34% (277/798)
回答No.1

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

harelip
質問者

お礼

DOSのコマンドを実行したDOS配下にbatファイルを置いたらうまくいきました! 今思うと当然か~て感じですが、事前にbatファイルの実行場所にcdしておかなかったのが原因でした; (bat自体動いてなかったようです。) ありがとうございました!

harelip
質問者

補足

返信ありがとうございます。 var_dumpはPHPの中で使うということでしょうか? $retはint(1)、$outはからっぽです;; coldfusionのソースは以前から使われているもので、一連の処理をPHPで一括化しようと思い、PHPに組み込んでいます。 coldfusionはサッパリわかりません。。

関連するQ&A