Hendra Setyawan
Hendra Setyawan

Reputation: 75

Warning: http_build_query(): Parameter 1 expected to be Array or Object whm api

I have warning with my coding whm plugins

Warning: http_build_query(): Parameter 1 expected to be Array or Object. Incorrect value given in /module_functions.php on line 50

Line 150 is: $query .= '?' . http_build_query($params);

Full line:

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);
}

Upvotes: -2

Views: 9376

Answers (1)

hanshenrik
hanshenrik

Reputation: 21513

in the whmapi function, $params has a default value of NULL, and NULL is not a legal argument for http_build_query, and you pass $params straight to http_build_query without first checking if it's null. stop giving http_build_query NULL's, do something like

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

Upvotes: 0

Related Questions