サーバー上のいくつかのcURLエラーをデバッグしようとしていますが、STDERRログを確認したいと思います。現在、エラーについて確認できるのは「エラーコード:7」であり、ターゲットサーバーに接続できません。ホストに連絡し、必要なポートを開くための特別なルールを作成しました。当面は証明書を無視します。
それでも接続できません。これをデバッグする必要がありますが、自分の側に関連する情報が表示されません。
「VERBOSE」と「STDERR」という行が最も重要だと思います。$curl_logには何も書き込まれません。私は何が間違っているのですか?マニュアルロジックに従って、これは正しいはずです...
使用中のPHP:
<?php
$curl = curl_init();
$curl_log = fopen("curl.txt", 'w');
$url = "http://www.google.com";
curl_setopt_array($curl, array(
CURLOPT_URL => $url, // Our destination URL
CURLOPT_VERBOSE => 1, // Logs verbose output to STDERR
CURLOPT_STDERR => $curl_log, // Output STDERR log to file
CURLOPT_SSL_VERIFYPEER => 0, // Do not verify certificate
CURLOPT_FAILONERROR => 0, // true to fail silently for http requests > 400
CURLOPT_RETURNTRANSFER => 1 // Return data received from server
));
$output = fread($curl_log, 2048);
echo $output; // This returns nothing!
fclose($curl_log);
$response = curl_exec($curl);
//...restofscript...
?>
PHPマニュアルから:http://php.net/manual/en/function.curl-setopt.php
CURLOPT_VERBOSE TRUEは、詳細情報を出力します。出力をSTDERRCURLOPT_STDERRに書き込みます 。STDERRの代わりにエラーを出力するための代替の場所。
これもアクセス許可の問題ではありません。サーバー側でファイルとスクリプトのアクセス許可を777に設定し、ローカルクライアントはWindowsであり、アクセス許可の設定を気にしませんでした(とにかく開発者専用です)。