2015-07-21 40 views
3

我想在我的網站上創建子域。我的託管計劃不支持子域通配符條目。所以,我想通過在PHP中使用cURL來創建它。 我下面的問題進行了說明:如何使用cURL創建子域?

此鏈接用於創建子域:

https://cpanel.myhost.com/cpanel/indexcp.php?option=subdomains 

這種形式在上面的鏈接創建一個子域:

<form method="post" action="/cpanel/indexcp.php?option=subdomains_add" name="domain"> 
     <table> 
      <tr> 
       <td align="right"><b>Subdomain</b> :&nbsp; </td> 
       <td><input type="text" onchange="updatedir(this);" id="domain" name="DomainName" />&nbsp;.&nbsp; 
        <select name="domain_selector" style="width: 300px"> 
         <option>mydomain.com</option> 
        </select> 
       </td> 
       <td><div id="domain_error" style="height: 16px; width: 16px"></div></td> 
      </tr> 
        </table> 
       </td> 
       <td></td> 
      </tr> 
      <tr><td colspan="3"><br /></td></tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td><input class="input-button" id="subdomain_submit" type="submit" value="Create" name="B1" /> 

       </td> 
       <td></td> 
      </tr> 
     </table> 
    </form> 

那麼,如何創建一個子域從我的cPanel使用cURL?

+0

@Julian - 如果你可以在瀏覽器中做到這一點,你可以在cURL中做到這一點。但是,這並不意味着你*應該*在cURL中完成。 –

回答

1

此代碼使用cPanel的JSON版本的「API2」,並可以做你所需要的。我沒有使用標準的cPanel帳戶進行測試,只使用有WHM訪問權限的帳戶。我希望這有幫助。

只要改變$subdomain$rootdomain到你所需要的。顯然也更新用戶憑證。

<? 
$whmusername = "root"; 
$whmpassword = "12345luggage"; 
$subdomain = "mysubdomain"; 
$rootdomain = "example.com"; 

$query = "https://127.0.0.1:2087/json-api/cpanel?cpanel_jsonapi_user=user&cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module=SubDomain&cpanel_jsonapi_func=addsubdomain&domain=".$subdomain."&rootdomain=".$rootdomain; 

$curl = curl_init();        // Create Curl Object 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0);  // Allow self-signed certs 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0);  // Allow certs that do not match the hostname 
curl_setopt($curl, CURLOPT_HEADER,0);    // Do not include header in output 
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);  // Return contents of transfer on curl_exec 
$header[0] = "Authorization: Basic " . base64_encode($whmusername.":".$whmpassword) . "\n\r"; 
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); // set the username and password 
curl_setopt($curl, CURLOPT_URL, $query);   // execute the query 
$result = curl_exec($curl); 
if ($result == false) { 
    error_log("curl_exec threw error \"" . curl_error($curl) . "\" for $query"); 
                // log error if curl exec fails 
} 
curl_close($curl); 

print $result; 

?>