【问题标题】:Using cPanel API to create mySQL database and user in PHP使用 cPanel API 在 PHP 中创建 mySQL 数据库和用户
【发布时间】:2013-01-18 16:41:17
【问题描述】:

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

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

关于我做错了什么有什么建议吗? (xmlapi.php 很好)

include("xmlapi.php");
$db_host = "usingfullyqualifieddomain";
$cpuser = "myuser";
$cppass = "mypass";

$xmlapi = new xmlapi($db_host);
$xmlapi->set_port(2083);
$xmlapi->password_auth($cpuser,$cppass);
$xmlapi->set_debug(1);
//create database
print $xmlapi->api1_query($cpuser, "Mysql", "adddb", 'myDatabaseName');
//create user
print $xmlapi->api1_query($cpuser, "Mysql", "adduser", array('user' => 'myDBUser','pass'=>'myDBPwd')); 

【问题讨论】:

  • 你找到解决方案了吗?

标签: php api cpanel whm


【解决方案1】:

该错误可能与您进行第一次服务调用以创建数据库的方式有关。这是我在 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 它,因为它会显示一些更有趣的信息来处理。

【讨论】:

  • api 1 已过时。请使用 api2
【解决方案2】:

目前,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;

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 2013-08-30
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2017-03-17
    • 2016-11-21
    相关资源
    最近更新 更多