我的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不返回数据。任何人都可以建议我需要解决的问题吗?
答案 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文件所在的目录,而不是包含文件名的整个路径。它现在都在工作。 谢谢你的帮助, 尼尔