問題:
データベースから情報を取得するために、Web サイトのフロントエンドで RESTful バックエンドを使用しようとしています。以下に示す PHP/cURL コードは、https://mydomain.com[/anything] 以外の URL で問題なく動作します。ここで、mydomain は使用しているドメインで、[/anything] は任意のサブドメインです。壊れたコードでいっぱいの URL を呼び出しても、常に http コード 200 と空の本文のヘッダーを返すだけです。しかし、同じ URL を Web ブラウザーに入力すると、期待どおりの出力が得られます (ほとんどの場合、JSON 文字列)。
要約すると:
コードで www.google.ca を呼び出すと、www.google.ca を構成する XML が取得されます。良い
Web ブラウザーで https:// mydomain.com/thing を呼び出すと、データベースからの情報を保持する期待される JSON 文字列が取得されます。優秀な
コードで https:// mydomain.com/thing を呼び出すと、HTTP コード 200 を示す本文のないヘッダーが返されます。
コード (AbstractActionController の indexAction から呼び出されています):
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,'https://mydomain.com/thing');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_COOKIE, $cookieHeader);
curl_setopt($ch, CURLOPT_HEADER, true);
$response = curl_exec($ch);
$err = curl_errno ( $ch );
$errmsg = curl_error ( $ch );
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
$httpCode = curl_getinfo ( $ch, CURLINFO_HTTP_CODE );
curl_close($ch);
私が使用しているもの:
Eclipse 開発環境を使用して、Ubuntu で Zend Framework 2 を使用する PHP5
https:// mydomain.com/thing は AbstractRESTfulController を指しています
編集:
cURL exec 呼び出しの後に apache2 ログに次のエラーが記録されることを知っておくと役立つ場合があります。
【Zend Debugger】起動コマンドを受け取れない
[Zend Debugger] メッセージを送信できません