• 締切済み

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での記述の仕方に問題があると思われるのですが どこを修正するべきか、アドバイス等いただけないでしょうか。

  • PHP
  • 回答数2
  • ありがとう数2

みんなの回答

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

>>curl -m 10 http://~~?param=~~~ >ブラウザ上で行うと返ってくる値はHTML... ところでこの「~~?」は何? 「xxx.php?」とか? どっちにしてもCURLで持ってくるのはHTMLって前提が有るようだからそういう加工されちゃうんじゃない? こんな風になってる? <html><body>TRUE</body></html> だとしたら「~~?」側で「text/plain」で吐いてみたらどうかな

myaa_myu
質問者

お礼

お礼が大変遅くなり、申し訳ございません。 どうやら外部サーバ上で、受付するIPアドレスを制限していたようです。 お手数おかけし申し訳ございません。ありがとうございました。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

そりゃそうでしょ http://jp2.php.net/manual/ja/function.shell-exec.php 一部抜粋 -------------------------- シェルによりコマンドを実行し、文字列として出力全体を返す -------------------------- コマンドの可否を返すとは書いてないね。 返値によって判定するしか無いんじゃない?

myaa_myu
質問者

お礼

すみません、間違いです。 echo "TRUE" となっている値を取得したいのです。 しかし、ブラウザ上で行うと返ってくる値はHTML... よろしくお願い致します

myaa_myu
質問者

補足

ご回答ありがとうございます。 少々説明が不足しておりましたが、外部プログラムでは成功すれば return "TRUE"; 失敗すれば return "FALSE" のように、"TRUE"または"FALSE"という「文字列」を返すようなプログラムになっています。 ですので、実行結果としてPHPプログラム内で実行した場合にも"TRUE"または"FALSE"という文字列を 取得したいのですが、これはPHPプログラム内で取得するのは不可能でしょうか? 恐縮ですがご指導いただけるとうれしいです。 よろしくお願い致します。

関連するQ&A

  • cURL から特定の文字列を抜き出したい

    あるページから、店舗名や住所、ある一定の文字列を抜き出したいのですがうまくいきません。 抜き出したいページには以下のような情報が書き込まれており、新店舗が出来ると更新されます。 ------------------- 写真や店舗紹介ページにあるような部分 【店舗情報】 ■店舗名 『保険代理店A』東京中央店 ■取扱募集代理店 株式会社ほけんブラブラ ■所在地 東京都中央区2-2 田中ビル5F ■電 話 0120-00-0200 ■開店日 2013年3月1日(火) ■営業時間 10:00~18:00 ■対応コース 来店 ------------------- 上記の7項目は絶対に変化なくページに存在しています。 そのページをcurlで取得し、一定の処理をします。 現在書けているのプログラム function curl_get_contents( $url, $timeout = 60 ){ $ch = curl_init(); curl_setopt( $ch, CURLOPT_URL, $url ); curl_setopt( $ch, CURLOPT_HEADER, false ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout ); $result = curl_exec( $ch ); curl_close( $ch ); return $result; } $result = curl_get_contents( "http://example.com?id=16", 120 ); $do = mb_strpos($result, "■"); echo $do; --------------------- 最初の■からの文字列は取得できるのですが、そこからの処理が分かりません。 できたら、連想配列に格納したいのです。 どうか諸先輩方のお知恵をお借り出来たらと存じます。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPのcurlの結果が展開されない

    PHPのcurlやsnoopyといったライブラリを使用して、外部サイトと自動で連携できるようなツールをつくりたいと思っています。 自動でログインさせるところまではできたのですが、ログイン後遷移したページの結果文字列(html)がテンプレートファイルのまま返ってきてしまっており、内容が取得できません。 結果の文字列は <script type="text/x-handlebars-template"> ~ </script> で囲まれており、中身は <div class="header"> <div class="header_aa"> {{#user}}{{> profile}}{{/user}} </div> などとなっており、テンプレートファイルの記述のままで、変数が展開されていない状態です。 欲しいのはこれが展開(解釈)された後の結果文字列です。 名前からしてhandlebars.jsのテンプレートファイルを使用しているのは分かるのですが、なぜこれは展開されないのでしょうか? PHPプレーンのcurlでアクセスしても、snoopyを使用してアクセスしても結果は同じです。 オプションでもこれを解決するようなものが見当たらず、行き詰まっております。 どうすれば展開後の結果が取得できるのか、ヒントがあれば教えて下さい。 なにとぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • IIS 5.2 上での PHP 5.3.5 の実行

    下記サイトを参考にサーバー(OS: MS Small Business Server & IIS 5.2) に PHP 5.3.5をインストールしました。 http://network.station.ez-net.jp/server/microsoft/windows/2008/iis7_php535.asp Command Line で PHP -v と入力すると正常にバージョンが返ってくるので PHP のインストールそのものは正常に終わったと考えていますが、 PHP の実行が出来ません。 例えば中身が <?php phpinfo(); ?> という内容のテストプログラムを他の cgiプログラムと同じフォルダに置き、ブラウザでアクセスしても動作しないのです。 IIS: WEB サイト→プロパティ→ホームディレクトリ→構成 の 拡張子 .php の設定は "C:\Program.Files\PHP\php-cgi.exe" としました。勿論 exe ファイルは上記パスで指定したフォルダに存在します。 XAMPP というパッケージソフトを使用し、PCのLocal Hostをサーバーに見立てて PHPを実行する事は出来ます。 この環境で作成した PHP をサーバー上で稼動させ、外部に公開したいのです。 初歩的なところで躓いているのだと思います。 PHPに詳しい方、教えて下さい

  • PHP3からPHP5にVerUpすると動作しない

    PHP3からPHP5へバージョンアップするとプログラムが正常動作しなくなりました。 includeファイル内に記述している関数が全く動作しなくなりました。 修復する方法をご存じの方、教えてください。

    • 締切済み
    • PHP
  • プログラムが実行されない?

    困っている内容を、簡単な例えで説明します。 PHPで「あるフォルダ内のwavファイルから、wmaとraファイルを変換作成する」 というプログラム(musicfile.php)を作り、バッチの実行ファイルを作成しました。勿論、変換に必要なexeは用意してあります。 バッチファイルの内容は『php musicfile.php』という単純なものになると思います。 さて、このバッチのショートカットを作成し、ブラウザ画面のボタンからそのショートカットを実行するように設定したのですが、思うように動作しません。 おかしいと思い、コマンドプロンプト画面から実行してみると、正常に動作します。 全く原因が解らないのですが、これはプログラムの記述が悪いのでしょうか? それとも、PHPの実行する環境(php.iniやApacheの設定)が悪いのでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPのcURLによるログインについての質問

    PHPのcURLによるログインについての質問をさせて頂きます。 会員サイトでIDとPASSの入力を行い、ログインをしてページの移行していくPHPの コードを書いておりますが、途中ページで検索BOXのフォームにキーワードを入れて 次のページに移行する必要があるのですが、ページ移行ができない状況であります。 質問をさせて頂きたい内容ですが、フォームへの入力が必要となるため、 下記のコードの入力項目である【$params01】又は他の部分に どのような記述をすればよいかをご教授いただければと思います。 サンプルコードなどを掲載しているサイトなどで調べていましたが、 【$params01】の配列のkeyの部分がname属性としているようなのですが、 今回ログインをするページの検索BOXのフォームにはname属性は付けられていないようです。 よろしくお願いいたします。 【$params01】 $params01 = array( "dscrCdNm" => '7893', "marketCd" => '検索' ); $address01 = 'https://xxxxxxxxxx.co.jp/xxxxxxxxxx'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $address01); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $params01); $inputcode = curl_exec($ch) or die('error ' . curl_error($ch)); mb_language("Japanese"); $order_adress = mb_convert_encoding($inputcode, "UTF-8", "auto"); print($order_adress); 【検索BOXのフォームのHTML部分】 <div class="box-search-stock-01 mb00" > <fieldset> <legend>検索</legend> <p class="search"> <label for="ss-02">名前・コード</label>: <input type="text" name="dscrCdNm" value="" id="ss-02"> <input type="hidden" name="marketCd" value=""> <input type="hidden" name="industryCd" value=""> <input type="image" src="/member/images/btn-search-02.gif" class="roll img-ipad" value="検索" title="検索" /> <span style="padding: 0 0 0 20px;"><a href="javascript:void(0);" onclick="modalOpenAction();return false;">→詳細検索はこちら</a></span> </p> </fieldset> </div> <input type="hidden" name="offsetRow" value=""> <input type="hidden" name="trdKbn" value="10"> <input type="hidden" name="pageNo" value="1">

    • ベストアンサー
    • PHP
  • PHP データ 送受信

    http://hogehoge.com/form.php http://hogehoge.com/send.php http://localhost.com/api.php http://hogehoge.com/send.phpにアクセスした際に http://hogehoge.com/form.phpで入力したデータを http://localhost.com/api.phpに飛ばす方法に困っています。 参考サイト http://blog.code4u.org/archives/407 send.php側 $url = 'http://localhost.com/api.php'; $params = array( 'name' => $name, 'email' => $email, 'address' => $address, 'tel' => $tel, ); $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, FALSE); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/x-www-form-urlencoded' ) ); $result = curl_exec($ch); curl_close($ch); と記述したのですが、 api.php でデータを受け取るコードがわからず困っています。 お分かりの方がいたらお願いします。

    • 締切済み
    • PHP
  • ブラウザで実行する場合はOKだが、コマンドラインから実行するとエラーが出る問題について

    phpであるページから文字列を抽出するプログラム(FILE.php)を書きました。 簡単に書くと以下の様なプログラムです。 file_get_contents($url); strip_tags($result); mb_convert_encoding()で文字列をSJISに変換 mb_ereg() 正規表現で文字列を抽出 ブラウザで実行すると、mb_eregで指定した文字列をきちんと見つけてくれますが、コマンドラインから実行した場合では文字列を見つけられません。 cronからphpファイルを呼び出して実行したいのですが、上手く動作してくれません。 原因がわからず困っています、宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPでexeファイル実行

    C言語でMPG形式の画像ファイルを読み込み、画像処理をしてテキスト形式で画像データを出力するプログラムを作成したのですが、 これをPHPプログラム内で動作させ、テキストデータ(できればバイナリのほうがいい)を読み取りたいと思います。 これはexeファイルをexecやsystem関数で実行することで解決できるのでしょうか? また、C言語の画像処理プログラムが画像を読み込んでからテキストデータを作成するまで1分ほどのタイムラグがあります。 どうすればPHP内の処理でexeファイル実行→exeがデータベースから画像を読み込む→ 1分処理待ち→テキスト作成→作成されたテキストデータをPHPで読み込み とできるのでしょうか? ちなみに、exeファイルとphpで作成した画像データベースはサーバー機に置くつもりです。 テキストデータを介さなくても、C言語プログラムからphpに直接データを渡す方法があればそちらのほうが望ましいです。 連続投稿で申し訳ないのですが、急を要するのでぜひともご解答お願いします。

    • ベストアンサー
    • PHP
  • HTMLファイル内のPHPコード実行について

    HTMLファイル内に記述されたPHPコードを実行するためには .htaccessに  AddType application/x-httpd-php .htm .html .php と記述する必要があると思いますが 上記のように記述された.htaccessファイルをアップロードして .htaccessファイルと同じディレクトリにある拡張子がhtml のファイルにアクセスすると ダウンロードのダイアログがでてしまい 正常にアクセスすることができません。 なお拡張子がphpとなっているものは 正常に実行されています。 原因と解決方法をご存知の方が いらっしゃいましたらご教示頂けないでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう