2016-07-24 66 views
2

我的PHP腳本中一定有一個錯誤,但它在我們返回的文本中顯示'OK'。爲什麼它會出現在錯誤通道中,而不是放入可以使用它的變量中? 這是我的代碼:cUrl的輸出

<?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

如果您塞雷爾語是不是SSL,請嘗試使用 curl_setopt($ CH,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,0); –

+0

我可以看到一切正常。試試這個$ json = json_decode($ o,true);的print_r($ JSON); –

回答

1

錯誤:var_dump()方法不返回字符串,但打印它

所以你在這裏做的是打印「錯誤:」。

然後打印$ o的內容。

然後「這是輸出:」。

爲了測試一個錯誤:

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

他傾銷$ o,他沒有得到任何正確的? –

+0

他通過傾銷獲得$ o的內容,但是他在代碼中的錯誤位置執行了該操作,從而導致打印錯誤 – cambierr

0

謝謝你們, 你是對的。我通過首先打印錯誤來掩蓋錯誤信息。一旦我用cambierr的方法,我看到了與證書有關的錯誤。我發現我的php只是指定cacert文件所在的目錄,而不是包含文件名的整個路徑。現在都在工作。 感謝您的幫助, 尼爾