Предупреждение: http_build_query (): параметр 1, как ожидается, будет Array или Object whm api - PullRequest
0 голосов
/ 29 декабря 2018

У меня есть предупреждение с моими плагинами для кодирования.

Предупреждение: http_build_query (): параметр 1 должен быть массивом или объектом.Неверное значение, указанное в /module_functions.php в строке 50

Строка 150: $query .= '?' . http_build_query($params);

Полная строка:

public function whmaapicall()
{
    $whmusername = $_ENV['REMOTE_USER'];
    $whmpassword = $_ENV['REMOTE_PASSWORD'];
    $query = 'https://127.0.0.1:2087/json-api/listpkgs?api.version=1';
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $header[0] = 'Authorization: Basic ' . base64_encode($whmusername . ':' . $whmpassword) . "\n\r";
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_URL, $query);
    $result = curl_exec($curl);

    if (!$result) {
        error_log('curl_exec threw error "' . curl_error($curl) . '" for ' . $query);
    }

    curl_close($curl);
    return json_decode($result);
}

public function whmapi($function = NULL, $params = NULL)
{
    $whmusername = 'root';

    if ($function == 'listpkgs') {
        $whmusername = $_ENV['REMOTE_USER'];
        return $this->whmapi2();
    }

    $whmhash = $this->gethash();
    $query = 'https://127.0.0.1:2087/json-api/' . $function;
    $query .= '?' . http_build_query($params); //line mentioned
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $header[0] = 'Authorization: WHM ' . $whmusername . ':' . preg_replace('\'(' . "\r" . '|' . "\n" . ')\'', '', $whmhash);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_URL, $query);
    $result = curl_exec($curl);
    curl_close($curl);
    return json_decode($result);
}

1 Ответ

0 голосов
/ 30 декабря 2018

в функции whmapi, $ params имеет значение по умолчанию NULL, и NULL не является допустимым аргументом для http_build_query, и вы передаете $ params прямо в http_build_query, не проверив сначала, является ли он нулевым.прекратить давать http_build_query NULL, сделать что-то вроде

$query .= '?';
if($params!==NULL){
    $query.=http_build_query($params);
}
...