来自cUrl的输出

时间:2016-07-24 15:05:13

标签: php curl

我的PHP脚本中一定有错误,但是它说“好”'在我们返回的文本中。为什么它出现在错误通道中而不是放入我可以使用它的变量? 这是我的代码:

<?php
$url = 'https://rest.tsheets.com/api/v1/jobcodes';
$api_token ="********";
$headers = array();
$headers[] = "Authorization: Bearer {$api_token}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true); 
$o = curl_exec($ch);
echo "Error:" . curl_error($ch);
echo "This is output: " . var_dump($o); 
?>

输出如下:

    Error:string(23256) "HTTP/1.1 200 OK
Date: Fri, 22 Jul 2016 15:18:14 GMT
Server: Apache
Cache-Control: no-cache, must-revalidate
Expires: 0
Transfer-Encoding: chunked
Content-Type: application/json

{
 "results": {
  "jobcodes": {
   "493387": {
     "id": 493387,
    "parent_id": 0,
    "assigned_to_all": false,
    "billable": false,
    "acti
.
.
.
"more": true
}"
This is output: 

因此,即使设置了returntransfer,也不会将任何内容放入返回的变量中。我无法确定是否确实存在错误或是否是导致它的PHP.ini设置。它返回OK的事实表明脚本很好。该脚本在托管在Web服务器上时可以运行,但现在从Windows中的PC运行,而cUrl不返回数据。任何人都可以建议我需要解决的问题吗?

2 个答案:

答案 0 :(得分:1)

错误:var_dump()方法不返回String但打印

所以你在这里做的就是打印&#34;错误:&#34;。

然后打印$ o的内容。

然后&#34;这是输出:&#34;。

测试错误:

if($o){
    echo "This is output: \n";
    var_dump($o);
} else{
    echo "Error:" . curl_error($ch);
}

答案 1 :(得分:0)

谢谢你们, 你是对的。我首先打印出错误来掩盖错误消息。一旦我使用了cambierr的方法,我就看到了与证书相关的错误。我发现我的php只指定了cacert文件所在的目录,而不是包含文件名的整个路径。它现在都在工作。 谢谢你的帮助, 尼尔