2

我正在使用下面的代码来获取 cron 列表,但我得到的只是一个空白页。此外,当我将端口 2087 替换为 2083 时,输出是 {"data":{"reason":"Access denied","re​​sult":"0"},"type":"text"} 具有 403 HTTP 状态。你能帮我解决这个问题吗?

            $user = $_ENV['REMOTE_USER'] ? $_ENV['REMOTE_USER'] : 'root';
            $accessHash = $this->getLocalAccessHash();
            if($accessHash === FALSE) return FALSE;

            $url = "https://127.0.0.1:2087/json-api/cpanel?user=$user&cpanel_jsonapi_module=Cron&cpanel_jsonapi_func=listcron&cpanel_jsonapi_version=2";
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_VERBOSE, 1);
            if($fp = fopen('curl_http.txt', "wa")) curl_setopt($ch, CURLOPT_STDERR, $fp);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            //curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: WHM $user:$accessHash"));
            $cronlistJSON = curl_exec($ch);
            $ci = curl_getinfo($ch);
            curl_close($ch);
            if($fp) fclose($fp);

            print_r($ci);
            die($cronlistJSON);  
4

1 回答 1

2
  • 检查您的访问哈希是否正确(但我猜您已经这样做了)
  • 您只能使用访问哈希方法登录到 root/reseller-accounts
  • 您的访问哈希是否可能包含任何空格?像这样剥离它:

    $accessHash = preg_replace('/\s/', '', $accessHash);
    
  • 可选:使用PHP cPanel-API 包装器,它使这些事情变得更容易。

于 2011-12-18T10:03:14.463 回答