问题:
我试图让我的网站前端使用 RESTful 后端从我的数据库中获取信息。我在下面的 PHP/cURL 代码适用于除 https://mydomain.com[/anything] 以外的任何 URL,其中 mydomain 是我正在使用的域,[/anything] 是任何子域。它总是只返回一个带有 http 代码 200 和一个空正文的标头,即使我调用一个充满损坏代码的 URL。但是,如果我在我的网络浏览器中输入相同的 URL,那么我会得到预期的输出(在大多数情况下是 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);
我正在使用什么:
PHP5 与 Zend Framework 2 在 Ubuntu 中使用 Eclipse 开发环境
https://mydomain.com/thing 指向 AbstractRESTfulController
编辑:
知道我在 cURL exec 调用之后在 apache2 日志中收到这些错误可能很有用:
[Zend 调试器] 无法接收启动命令
[Zend 调试器] 无法发送消息