【问题标题】:Create a new subdomain and MySQL database via WHM or cPanel API with PHP使用 PHP 通过 WHM 或 cPanel API 创建新的子域和 MySQL 数据库
【发布时间】:2017-06-13 15:09:42
【问题描述】:

我原本希望这是一个简单的任务,但现在我已经深入研究了几天,整个过程似乎比我最初想象的要复杂得多。

我想在 mydomain.com 下创建一个新的子域,例如test123.mydomain.com,通过 WHM API 1 或 cPanel API 2 使用 PHP,随后在该新子域下使用新的 MySQL 数据库。

我假设我需要先通过 WHM 进行身份验证(使用 WHM 远程 API 令牌?),然后调用适当的 API 模块和函数,最后检查响应是否成功或错误。因为我是用 PHP 做的,所以我假设我需要通过curl 来做这一切。在cPanel API 2 docs,我看到了这个电话:

https://hostname.example.com:2087/cpsess##########/json-api/cpanel?cpanel_jsonapi_user=user&cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module=SubDomain&cpanel_jsonapi_func=addsubdomain&domain=subdomain&rootdomain=example.com&dir=%2Fpublic_html%2Fdirectory_name&disallowdot=1

不幸的是,这并没有多大帮助,因为我没有打开的“cpsess”,因为我是通过 PHP 脚本执行此操作并用 WHM 遥控器替换“cpsess##########” API 令牌也不起作用。我已经尝试了几种不同的方法,到目前为止,我唯一可以使用的方法是用于在服务器上列出帐户的 cPanel API 1 示例......它运行良好,但它在 API 1 上没有可用于创建子域的模块:

function getUserAccountList($user,$token){
    $userList = "";
    $query = "https://hostname.example.com:2087/json-api/listaccts?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: whm $user:$token";
    curl_setopt($curl,CURLOPT_HTTPHEADER,$header);
    curl_setopt($curl, CURLOPT_URL, $query);
    $result = curl_exec($curl);
    $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
    if ($http_status != 200) {
        $userList = "[!] Error: " . $http_status . " returned\n";
    } else {
        $json = json_decode($result);
        $userList.= "[+] Current cPanel users on the system:<BR><BR>";
        foreach ($json->{'data'}->{'acct'} as $userdetails) {
            $userList.= $userdetails->{'user'} . "<BR>";
        }
    }
    curl_close($curl);
    return $userList;
}

问题是:如何使用 WHM API 1 或 cPanel API 2 使用 PHP 脚本创建新的子域和 MySQL 数据库?任何帮助将不胜感激!

【问题讨论】:

    标签: php api cpanel whm


    【解决方案1】:

    我找到了一个非常有效的解决方案,并且在处理 cPanel 和 WHM 可用的不同 API 版本时消除了大部分猜测:

    https://www.codepunker.com/blog/using-php-to-create-new-subdomains-databases-and-email-accounts-on-a-cpanel-driven-server

    此设置需要安装 Composer、PHP 依赖项管理器和 Mochamad Gufron 开源的 mgufrone/cpanel-whm 软件包,因此您需要对服务器进行 root 访问才能执行此操作。上面的链接是设置的所有信息,以及通过 WHM/cPanel API 和 PHP 创建一个新的子域和一个 MySQL 数据库。

    【讨论】:

    • 没有root权限怎么办?这是不可能的吗? :(
    • @PedroAraujoJorge 似乎仅使用您的 cPanel 用户/通行证就可以进行某种级别的访问,正如这篇文章所示:stackoverflow.com/questions/5608010/…
    • 但该解决方案不是已被弃用或即将被弃用吗?我现在正在尝试使用documentation.cpanel.net/display/DD/… 的解决方案,但出现错误。
    • @PedroAraujoJorge 如果您的主机会为您创建一个 API 令牌,您最好使用 API 令牌...根据文档,API 令牌完全取代了对 root 访问的需求:go.cpanel.net/ManageAPITokens
    猜你喜欢
    • 2013-12-24
    • 2011-08-12
    • 1970-01-01
    • 2013-07-24
    • 2013-01-18
    • 2011-12-12
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    相关资源
    最近更新 更多