通过php脚本创建cpanel数据库

Jas*_*rne 4 php cpanel

我试图使用cpanel/whm和postwwwacct php脚本自动安装一些自定义软件.这需要将文件复制到用户public_html文件夹,然后编辑配置并设置eh文件权限.到目前为止这么好,没有问题.在尝试创建数据库时遇到一些问题.

    $db_create= $opts['user']. '_lol';  
    $db_host="immersion-networks.com";
    include("xmlapi.php");   
    $xmlapi = new xmlapi($db_host);    
    $xmlapi->password_auth("".$opts['user']."","".$opts['pass']."");    
    $xmlapi->set_debug(1);//output actions in the error log 1 for true and 0 false  
    $xmlapi->set_output('array');//set this for browser output  
    //create database    
    $createdb = $xmlapi->api1_query($opts['user'], "Mysql", "adddb", array($db_create));   
    //create user 
    $usr = $xmlapi->api1_query($opts['user'], "Mysql", "adduser", array($db_create, $opts['pass']));   
     //add user 
    $addusr = $xmlapi->api1_query($opts['user'], "Mysql", "adduserdb", array($db_create,$db_create, 'all')); 
Run Code Online (Sandbox Code Playgroud)

其余的代码运行正常,但数据库不是正在创建,也不是用户.有任何想法吗?

Jas*_*rne 12

require("xmlapi.php"); // this can be downlaoded from https://github.com/CpanelInc/xmlapi-php/blob/master/xmlapi.php
$xmlapi = new xmlapi("your cpanel domain");   
$xmlapi->set_port( 2083 );   
$xmlapi->password_auth($opts['user'],$opts['pass']);    
$xmlapi->set_debug(0);//output actions in the error log 1 for true and 0 false 

$cpaneluser=$opts['user'];
$databasename="something";
$databaseuser="else";
$databasepass=$opts['pass'];

//create database    
$createdb = $xmlapi->api1_query($cpaneluser, "Mysql", "adddb", array($databasename));   
//create user 
$usr = $xmlapi->api1_query($cpaneluser, "Mysql", "adduser", array($databaseuser, $databasepass));   
//add user 
$addusr = $xmlapi->api1_query($cpaneluser, "Mysql", "adduserdb", array("".$cpaneluser."_".$databasename."", "".$cpaneluser."_".$databaseuser."", 'all'));
Run Code Online (Sandbox Code Playgroud)

上面的代码对我有用!需要确保您使用的是cpanel用户/ pass not root,以及您使用的是端口2083

  • 在我使用它时,数据库用户没有被授予权限,可能是因为我已经在设置变量时将cPanel用户名包含在`$ databasename`和`$ databaseuser`中.要解决,请用以下代码替换最后一行:`$ addusr = $ xmlapi-> api1_query($ cpaneluser,'Mysql','adduserdb',array(''.$ databasename.'',''.$ databaseuser.'',' all'));`基本上从查询中删除`$ cpaneluser`. (2认同)

bru*_*tas 5

没有xmlapi

function createDb($cPanelUser,$cPanelPass,$dbName) {

    $buildRequest = "/frontend/x3/sql/addb.html?db=".$dbName;

    $openSocket = fsockopen('localhost',2082);
    if(!$openSocket) {
        return "Socket error";
        exit();
    }

    $authString = $cPanelUser . ":" . $cPanelPass;
    $authPass = base64_encode($authString);
    $buildHeaders  = "GET " . $buildRequest ."\r\n";
    $buildHeaders .= "HTTP/1.0\r\n";
    $buildHeaders .= "Host:localhost\r\n";
    $buildHeaders .= "Authorization: Basic " . $authPass . "\r\n";
    $buildHeaders .= "\r\n";

    fputs($openSocket, $buildHeaders);
    while(!feof($openSocket)) {
        fgets($openSocket,128);
    }
    fclose($openSocket);
}


function createUser($cPanelUser,$cPanelPass,$userName,$userPass) {

    $buildRequest = "/frontend/x3/sql/adduser.html?user=".$userName."&pass=".$userPass;

    $openSocket = fsockopen('localhost',2082);
    if(!$openSocket) {
        return "Socket error";
        exit();
    }

    $authString = $cPanelUser . ":" . $cPanelPass;
    $authPass = base64_encode($authString);
    $buildHeaders  = "GET " . $buildRequest ."\r\n";
    $buildHeaders .= "HTTP/1.0\r\n";
    $buildHeaders .= "Host:localhost\r\n";
    $buildHeaders .= "Authorization: Basic " . $authPass . "\r\n";
    $buildHeaders .= "\r\n";

    fputs($openSocket, $buildHeaders);
    while(!feof($openSocket)) {
        fgets($openSocket,128);
    }
    fclose($openSocket);
}

function addUserToDb($cPanelUser,$cPanelPass,$userName,$dbName,$privileges) {

    $buildRequest = "/frontend/x3/sql/addusertodb.html?user=".$userName."&db=".$dbName.$privileges;

    $openSocket = fsockopen('localhost',2082);
    if(!$openSocket) {
        return "Socket error";
        exit();
    }

    $authString = $cPanelUser . ":" . $cPanelPass;
    $authPass = base64_encode($authString);
    $buildHeaders  = "GET " . $buildRequest ."\r\n";
    $buildHeaders .= "HTTP/1.0\r\n";
    $buildHeaders .= "Host:localhost\r\n";
    $buildHeaders .= "Authorization: Basic " . $authPass . "\r\n";
    $buildHeaders .= "\r\n";

    fputs($openSocket, $buildHeaders);
    while(!feof($openSocket)) {
        fgets($openSocket,128);
    }
    fclose($openSocket);
}

//Create Db
createDb('CpanelUser','cPanelPass','dbName');

//Create User
createUser('cPanelUser','cPanelPass','dbUsername','dbUserPass');

//Add user to DB - ALL Privileges
addUserToDb('cPanelUsername','cPanelPass','dbUsername','dbName','&ALL=ALL');

//Add user to DB - SELECTED PRIVILEGES
addUserToDb('cPanelUsername','cPanelPass','dbUsername','dbName','&CREATE=CREATE&ALTER=ALTER');
Run Code Online (Sandbox Code Playgroud)

  • 您好,感谢您的评论,但addUsetTODb无法正常工作。 (3认同)
  • 问题 addUsetTODb :添加用户,但不添加所有权限 (2认同)
  • 对于 **addUserToDb()** 函数,我必须传递 `'&privileges=ALL'` 作为最终参数值。 (2认同)