環境はEC2でAmazonLinuxを動作させています。
FuelPHPで以下のようなソースでリクエストを投げました。パラメータについてはダミーだとお考え下さい。
lang
1$url = "https://hogehoge.net/hoge/api/login" 2$request = \Request::forge($url, 'curl'); 3$request->set_option(CURLOPT_SSL_VERIFYPEER, false); 4$request->set_method('post'); 5$request->set_params($params); 6$request->add_param($param2); 7$request->execute(); 8$response = $request->response();
その結果h,curlを投げた結果が404で帰ってきました。
FuelPHPのログに以下のようにログがありました。
INFO - 2015-05-26 10:06:34 --> Fuel\Core\Request_Curl::__construct - Creating a new CURL Request with URI = "https://hogehoge.net/hoge/api/login"
INFO - 2015-05-26 10:06:34 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "error/404"
INFO - 2015-05-26 10:06:34 --> Fuel\Core\Request::execute - Called
INFO - 2015-05-26 10:06:34 --> Fuel\Core\Request::execute - Setting main Request
このリクエスト先は自分自身のサーバです。
httpdのログを見ても、何も表示されておりませんでした。
不思議なのは、linuxのコマンドのcurlを投げた場合、ちゃんとリクエストが届くのです。
このような現象に、どなたか心当たりが無いでしょうか?
curlをコマンドで打つとリクエストが届くので、セキュリティグループの問題ではないと考えています。
FuelPHPの内部的な問題ではないかと思っていますが、configファイルは数週間変更しておりません。
追記です。
Fuel\Core\classes\requestのcurl.phpで、executeメソッドの中を見てみると、
lang
1$this->set_response($body, $this->response_info('http_code', 200), $mime, $headers, isset($this->headers['Accept']) ? $this->headers['Accept'] : null);
という処理の後で、
lang
1if ($body === false) 2{ 3 $this->set_defaults(); 4 throw new \RequestException(curl_error($connection), curl_errno($connection)); 5}
の処理に入ってました。
404エラーとなっていたのは例外処理の結果らしく、根本的にはこのset_responseあたりに問題があるんじゃないかと思っています。
引き続き調べてみます。
さらに追記です。
curl.php の executeメソッドで、
lang
1$body = curl_exec($connection);
の結果、$bodyが空になっていました。
その数行手前で、
lang
1curl_setopt_array($connection, $this->options);
の時点で、$this->options の内容をログに出力した所、以下のようになりました。
(
[> 64] =>
[13] => 30
[19913] => 1
[45] =>
[52] => 1
[10036] => POST
[47] => 1
[10015] => param_name=hogehoge1¶m_name2=hogehoge2
)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/27 01:15
2015/05/27 14:33
2015/05/28 01:23
2015/06/02 00:35
2015/06/02 11:38