![](/img/trans.png)
[英]How to create database programmatically in WHM/Cpanel using php code?
[英]Create a new subdomain and MySQL database via WHM or cPanel API with PHP
我曾希望这是一项容易完成的任务,但是由于我已经深入研究了几天,所以整个过程似乎比我最初想象的要复杂得多。
我想使用PHP通过WHM API 1或cPanel API 2在mydomain.com下创建一个新的子域,例如test123.mydomain.com,然后在该新子域下使用一个新的MySQL数据库。
我假设我需要首先通过WHM进行身份验证(使用WHM远程API令牌?),然后调用适当的API模块和函数,最后检查响应是否成功。 由于我使用PHP进行此操作,因此假设我需要通过curl
来完成所有操作。 在cPanel API 2文档中 ,我看到此调用:
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远程API令牌替换“ cpsess ##########”也不行。 我已经尝试了几种不同的方法,到目前为止,我唯一可以使用的方法是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数据库? 任何帮助将不胜感激!
我找到了一种效果很好的解决方案,并且消除了处理cPanel和WHM提供的不同API版本时的大部分猜测:
此设置需要安装Composer,PHP依赖关系管理器以及Mochamad Gufron开源的mgufrone / cpanel-whm软件包,因此您需要对服务器的root访问权限。 上面的链接提供了所有信息,包括设置,通过PHP的WHM / cPanel API创建新的子域和MySQL数据库的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.