- 締切済み
PHPでcurl実行
お世話になります。 PHPでcurlを使用して外部のサーバ上にあるプログラムを実行しようとしています。 $command = "curl -m 10 http://~~?param=~~~"; $result = shell_exec(command); このようにプログラム上で記述しているのですが、うまく動作しません。 正常な動作としては、処理を行った後に「TRUE」という文字列が返ってくるはずなのですが、 画面上に$resultの値を出力してみると、「~~~</body></html>」と、 なぜかHTMLタグが返ってきており、正常な処理が行われません。 ためしにコマンドライン上より curl -m 10 http://~~?param=~~~ を実行すると、「TRUE」という文字が表示されてきちんと動作しますので、外部に置いてある プログラムの問題ではなく、こちらで作成したPHPでの記述の仕方に問題があると思われるのですが どこを修正するべきか、アドバイス等いただけないでしょうか。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- SAYKA
- ベストアンサー率34% (944/2776)
>>curl -m 10 http://~~?param=~~~ >ブラウザ上で行うと返ってくる値はHTML... ところでこの「~~?」は何? 「xxx.php?」とか? どっちにしてもCURLで持ってくるのはHTMLって前提が有るようだからそういう加工されちゃうんじゃない? こんな風になってる? <html><body>TRUE</body></html> だとしたら「~~?」側で「text/plain」で吐いてみたらどうかな
- SAYKA
- ベストアンサー率34% (944/2776)
そりゃそうでしょ http://jp2.php.net/manual/ja/function.shell-exec.php 一部抜粋 -------------------------- シェルによりコマンドを実行し、文字列として出力全体を返す -------------------------- コマンドの可否を返すとは書いてないね。 返値によって判定するしか無いんじゃない?
お礼
すみません、間違いです。 echo "TRUE" となっている値を取得したいのです。 しかし、ブラウザ上で行うと返ってくる値はHTML... よろしくお願い致します
補足
ご回答ありがとうございます。 少々説明が不足しておりましたが、外部プログラムでは成功すれば return "TRUE"; 失敗すれば return "FALSE" のように、"TRUE"または"FALSE"という「文字列」を返すようなプログラムになっています。 ですので、実行結果としてPHPプログラム内で実行した場合にも"TRUE"または"FALSE"という文字列を 取得したいのですが、これはPHPプログラム内で取得するのは不可能でしょうか? 恐縮ですがご指導いただけるとうれしいです。 よろしくお願い致します。
お礼
お礼が大変遅くなり、申し訳ございません。 どうやら外部サーバ上で、受付するIPアドレスを制限していたようです。 お手数おかけし申し訳ございません。ありがとうございました。