2016-07-24 4 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

sererが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

おかげでみんなが、あなたは正しかった 。エラーを最初に表示してエラーメッセージを隠していました。私がカンビエールの方法を使うとすぐに、私は証明書に関連するエラーを見ました。私は私のPHPは、cacertファイルがあったディレクトリを指定していただけで、ファイル名を含むパス全体ではないことが分かった。それはすべて今働いている。 ご協力ありがとうございます。 ニール

関連する問題