質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

2900閲覧

cURLについて

chapp

総合スコア233

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

1クリップ

投稿2016/12/12 05:10

お世話になっております。
以前、バックグラウンドでデータを外部サイトにPOSTしたいとの質問をさせて頂き、cURLを利用して対処いたしました。

この時の質問がこちら
https://teratail.com/questions/51902

その時のアドバイスを基に記述したスクリプトがこちら

exec("nohup php -c '' 'curl.php' '$buyer_mobile_no' '$smstext' '$number'> /dev/null &");

curl.php

$buyer_mobile_no = $argv[1]; $smstext = $argv[2]; $number = $argv[3]; $data = "mobilenumber=".$buyer_mobile_no."&smstext=".$smstext; $ch = curl_init(); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, 'https://***.com/?'); $result = curl_exec($ch); echo 'RETURN:'.$result; curl_close($ch);

内容は、$buyer_mobile_noに格納された携帯番号宛に、本文($smstext)を送信するというものですが、この度、サーバーを引っ越したら動かないことが判明しました。

お恥ずかしながら、cURLなるもの初めて触ったわけですが、どこを動かしたらいいのかが分からず、アドバイスを頂戴出来ればと質問した次第です。

お忙しい中恐縮ですが、とても困っています。
お知恵を頂戴出来れば幸いです。
よろしくお願い申し上げます。

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

この度、サーバーを引っ越したら動かないことが判明しました。

何故スクリプトが動かないのでしょう。
この時点で色々と原因が考えられますが、内容に応じて対応が変わります。

  • 移行先のサーバーにはlibcurlが含まれていないからですか?
  • ファイアウォール等でせき止められていますか?
  • 利用しているサービスの制限で、払い出されるトークンは同じIPアドレスでしか使用出来ない等の制限はありませんか?

とりあえずlibcurlが無かった時の代替手段としてfile_get_contentsを挙げておきます。
これはfile_get_contentsという名称とは裏腹にPOST送信も出来る凄いやつです。
(使い方はfile_get_contents POST等でぐぐればすぐに出てくるでしょう)

ただし、php.iniの設定でallow_url_fopenが有効である必要があります。
もしcURLとfile_get_contentsのどちらも使えない場合、外部鯖への接続を禁止するポリシーかなにかがあると思いますので、ほぼ詰みです。

fsockopenやLinuxの任意コマンドを叩く作戦もありますがどんどん原始的になっていきますね。
ですがこれらも望み薄でしょう。
因みにfsockopenに至っては私も使った事がないのでアドバイスすら出来ません…


根本原因として、この辺も含めて考えるべき問題だと思いますので、
時間が出来ましたら追記してみてください。

  • 何故cURLすら使えないサーバーに引っ越さなければならなかったのか?
  • 元のサーバーが嫌な理由は?
  • VPSやAWSでも良くないですか?

投稿2016/12/12 06:03

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chapp

2016/12/12 10:35

miyabi-sunさん こんばんは。お返事が遅くなりました。 ご親切なアドバイスをありがとうございます。 アドバイスの通り、「file_get_contents POST」で調べてみました。 描いている動作がこちらでも得ることが出来、感謝です。 この度のサーバーにもphpinfoでは、cURLは使えるよう表示されていますが、PHPのバージョンが旧サーバーの5.3から5.4(新サーバー)に代わったことが原因なのか、質問時に記載したスクリプトでは動きませんでした。(POSTの受取側も調べたが、データが送られてくるログが見当たらなかった) 以下にて、この度参考にしたスクリプトを記載いたします。 この度のご対応、本当にありがとうございます。助かりました。 $result = file_get_contents( 'http://www.example.com/post.php', false, stream_context_create( array( 'http' => array( 'method' => 'POST', 'header' => implode( "\r\n", array( 'Content-Type: application/x-www-form-urlencoded' ) ), 'content' => http_build_query( array( 'test1' => 'test1', 'test2' => 'テスト2' ) ) ) ) ) );
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問