- 締切済み
外部プログラム実行時の戻り値
こんにちは。 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が正常に実行されたのか戻り値を取得したいです。。 とても初歩的な質問で申し訳ないのですが、ご教授よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
なんとも言えませんが、webインタフェースでbatファイルを実行 するのはどうかと・・・ 普通に、RDBにアクセスするという選択はないのでしょうか?
- sykt1217
- ベストアンサー率34% (277/798)
var_dump($hoge)を使って、デバッグ(風)に変数の中身を確認しながら進めてみてはいかがでしょう?
お礼
DOSのコマンドを実行したDOS配下にbatファイルを置いたらうまくいきました! 今思うと当然か~て感じですが、事前にbatファイルの実行場所にcdしておかなかったのが原因でした; (bat自体動いてなかったようです。) ありがとうございました!
補足
返信ありがとうございます。 var_dumpはPHPの中で使うということでしょうか? $retはint(1)、$outはからっぽです;; coldfusionのソースは以前から使われているもので、一連の処理をPHPで一括化しようと思い、PHPに組み込んでいます。 coldfusionはサッパリわかりません。。
お礼
初心者なもので、つまらない質問をしてしまいました。 おつきあいくださってありがとうございました!
補足
返信ありがとうございます。 確かに変なやり方かもです; sqlplusをなんとか実行できないかな~と思っていました。