使用cpanelapi在PHP中创建mySQL数据库和用户

使用cpanelapi在PHP中创建mySQL数据库和用户,php,api,cpanel,whm,Php,Api,Cpanel,Whm,我正在尝试创建一个mysql用户,并将其分配给创建的数据库 我尝试将$db_host设置为IP地址、FQD、localhost(因为我是从同一台服务器上运行的)等。所有这些都没有成功 对我做错了什么有什么建议吗?(xmlapi.php正在酝酿中) 该错误可能与您第一次调用服务以创建数据库的方式有关。以下是我在CPanel 11上的做法: $auth_user = 'XXXXXX'; $auth_pass = 'XXXXX'; $server = 'XXXXXXXX.com'; $json_c

我正在尝试创建一个mysql用户,并将其分配给创建的数据库

我尝试将$db_host设置为IP地址、FQD、localhost(因为我是从同一台服务器上运行的)等。所有这些都没有成功

对我做错了什么有什么建议吗?(xmlapi.php正在酝酿中)


该错误可能与您第一次调用服务以创建数据库的方式有关。以下是我在CPanel 11上的做法:

$auth_user = 'XXXXXX'; 
$auth_pass = 'XXXXX'; 
$server = 'XXXXXXXX.com';
$json_client = new \xmlapi($server);

$json_client->set_output('json'); 
$json_client->set_port(2083); 
$json_client->password_auth($auth_user, $auth_pass);
$json_client->set_debug(1);

# Create Database
$result = $json_client->api1_query( $auth_user, 'Mysql', 'adddb', array($shop->alias));
var_dump($result);
请注意,第四个参数应该是包含这些参数的数组,而不是执行此操作时的字符串


还要注意,打印api调用结果对于调试不是很有用。尝试使用var_dump'ing it,因为它会向您显示一些更有趣的信息来处理。

目前,cpanel支持cpanel json api。。 在这里,您可以使用此代码。。 这对我很有效

<?php 

$cpanelusername = "cpanelusername";
$cpanelpassword = "cpanelpassword";  
$domain = 'mydomain.com';
   
$query = "https://$domain:2083/json-api/cpanel?cpanel_jsonapi_module=Mysql&cpanel_jsonapi_func=adddb&cpanel_jsonapi_apiversion=1&arg-0=DBNAME";

$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($cpanelusername.":".$cpanelpassword) . "\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;

?>


您找到解决方案了吗?api 1已经过时了。请使用api2
<?php 

$cpanelusername = "cpanelusername";
$cpanelpassword = "cpanelpassword";  
$domain = 'mydomain.com';
   
$query = "https://$domain:2083/json-api/cpanel?cpanel_jsonapi_module=Mysql&cpanel_jsonapi_func=adddb&cpanel_jsonapi_apiversion=1&arg-0=DBNAME";

$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($cpanelusername.":".$cpanelpassword) . "\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;

?>