【问题标题】:Don't show logs with PHP command and cURL不要使用 PHP 命令和 cURL 显示日志
【发布时间】:2016-12-06 19:11:48
【问题描述】:

我用 PHP 开发了一个脚本,我在控制台中使用它,命令为 php index.php

在这个脚本中,我使用 cURL 来查询服务器。

问题是我的脚本在控制台上显示日志,我只想要回显的结果。

您有隐藏这些日志的想法吗?

// GET TOKEN
// /////////////////////////////////////////////////////////////////////////////
$url = "some/url";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, "$user:$pwd");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$data = curl_exec($ch);
$location = "";
preg_match_all('/^Location:(.*)$/mi', $data, $location);
$location = trim($location[1][0]);
$location = parse_url($location);
parse_str($location['query'], $attrs);
$token = $attrs['code'];

if( isset($token) ) {

    // GET CONNEXION
    // /////////////////////////////////////////////////////////////////////////
    $url = "some/url";
    $post_data = ['code' => $token, 'grant_type' => 'authorization_code'];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERPWD, "$client_id:$client_secret");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $data = json_decode(curl_exec($ch));
    $connexion = isset($data->access_token) ? $data->access_token : $data->error_description;

    // GET LOGIN
    // /////////////////////////////////////////////////////////////////////////
    $url = "some/url";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    $data = curl_exec($ch);
    $data = json_decode($data);
    // $login = json_encode(['public' => $data->api_keys[1]->public, 'secret' => $data->api_keys->secret]);

    // REQUEST
    // /////////////////////////////////////////////////////////////////////////
    $url = $request . "?externalId=".$external_id."&externalSource=".$external_source;
    date_default_timezone_set("Europe/Paris");
    $nonce = generateRandomString();
    file_put_contents('php://stderr', print_r("Set random nonce to " . $nonce . "\n", TRUE));
    $created = date("Y-m-dTH:i:sP");
    $created = date("Y-m-dTH:i:sP");
    $username = $data->api->public;
    $secret = $data->api->secret;
    $pwd_digest = base64_encode(sha1($nonce.$created.$secret));
    $auth_header = "X-WSSE: UsernameToken Username=\"$username\", PasswordDigest=\"$pwd_digest\", Nonce=\"$nonce\", Created=\"$created\"";
    $header = array($auth_header, 'Accept: something', 'Accept-Language: en');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    $data = curl_exec($ch);
    $data = json_decode($data);
    echo $data->nbNqPoints;

} else {
    echo "0";
}

【问题讨论】:

  • 因为对于每个站点,我们必须以各种方式处理。那么您能否提供您的 $url 以及您可以提供的任何内容,以便我们为您提供帮助!
  • 我不知道它是否相关,但是你在哪里设置了CURLOPT_RETURNTRANSFER,尝试将它设置为true而不是1。
  • 你可以使用一点 ob_start(); ob_get_clean();破解它
  • 谢谢@BrandonHorsley,但这并没有改变任何东西! ;)
  • 非常有趣@hanshenrik!我试试这个,谢谢。

标签: php api curl console


【解决方案1】:

在此地址找到答案:managing curl output in php

我为每个 cURL 实例添加了这一行:

curl_setopt($ch, CURLOPT_VERBOSE, 0);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-21
    • 2015-11-05
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    相关资源
    最近更新 更多