繁体   English   中英

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

[英]Using cPanel API to create mySQL database and user in PHP

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

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

关于我做错了什么的任何建议? (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')); 

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

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

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM