无法使用xmlapi

时间:2019-01-13 14:42:49

标签: php cpanel cpanel-xmlapi

我正在尝试使用包含xmlapi的php脚本创建一个新的数据库。我按照here所述的步骤和用法进行操作。不过,我无法创建它。检查生成的错误日志后,发现以下错误:

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="google" content="notranslate" />
    <meta name="apple-itunes-app" content="app-id=1188352635" />
    <title>Error</title>
    <link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAICAAAAEAIADSAgAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAplJREFUWIXt1j2IHGUYB/DfOzdnjIKFkECIVWIKvUFsIkRExa9KJCLaWAgWJx4DilZWgpDDiI0wiViIoGATP1CCEDYHSeCwUBBkgiiKURQJFiLo4d0eOxYzC8nsO9m9XcXC+8MW+3z+9/l6l2383xH+iSBpElyTdoda26xsDqp/h0CVZ3vwKm7tMBngAs7h7eRYebG6hMtMBHbMBX89vfARHprQ5U8cwdFQlIOZCVR5di1+w/wWXT/EY6EoN5NZCODuKZLDwzgSMCuBe2fwfX6QZwtpWzqfBBtLC3txF/ZhxKbBGx0EfsTJS77vwmGjlZrD4mUzUOXZjVjGI65cnTXchB8iupdDUb7QinsQZ7GzZftdQj2JVZ49iC/w6JjksIo7OnS9tiA5Vn6GtyK2+1MY5NkhfGDygVrBAxH5WkPuMjR7/3UsUFLl2Q68s4XkA3ws3v9zoSjX28Kr5wL1xrTxa6ou+f6OZGvqPg9v1wZeaUjcELE/DVfNhWFSvy/enOIZ9eq1sTokEMNLWI79oirP8g6fXpVnh7GEvY1sV/OJ4f0UhyKKk6EoX4x5pEkgXv6L6OM99YqNw/c4kXSwG5nkIfpLCynuiahW1GWeJHkfT4aiXO9atz1XcD6I6yLyHu6bIPk6Hg9FeYZ63y9EjBarPDvQ8VJ1nd9V3D4m+RncForyxFCQ4hSeahlej88Hefauurdwaufr5z/F/ZHAX6nL+mZE18e36IWiHLkFocqzW9QXcNz1+wUHxJ/f10JRPjvGP4pk/vj5L3F8AtufdD+/p6dJDknzX+05fDLGtife/766t9MRgFCUffWTudwE3AqBlVCUf0xLYGTQqzzbhydwJ3Y34g318J1tmX+DPBTlz9MS2MY2/nP8DTGaqeTDf30rAAAAAElFTkSuQmCC" type="image/x-icon" />

    <!-- EXTERNAL CSS -->
    <link href="/cPanel_magic_revision_1386192030/unprotected/cpanel/fonts/open_sans/open_sans.min.css" rel="stylesheet" type="text/css" />
    <link href="/cPanel_magic_revision_1542513958/unprotected/cpanel/style_v2_optimized.css" rel="stylesheet" type="text/css" />

    <style type="text/css">
/*
  This css is included in the base template in case the css cannot be loaded because of access restrictions
  If this css is updated, please update securitypolicy_header.html.tmpl as well
*/
.copyright {
  background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzNTlwdCIgaGVpZ2h0PSIzMjAiIHZpZXdCb3g9IjAgMCAzNTkgMjQwIj48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGQ9Ik0xMjMgMGgyMzUuMzd2MjQwSDEyM3ptMCAwIi8+PC9jbGlwUGF0aD48L2RlZnM+PHBhdGggZD0iTTg5LjY5IDU5LjEwMmg2Ny44MDJsLTEwLjUgNDAuMmMtMS42MDUgNS42LTQuNjA1IDEwLjEtOSAxMy41LTQuNDAyIDMuNC05LjUwNCA1LjA5Ni0xNS4zIDUuMDk2aC0zMS41Yy03LjIgMC0xMy41NSAyLjEwMi0xOS4wNSA2LjMtNS41MDUgNC4yLTkuMzUzIDkuOTA0LTExLjU1MiAxNy4xMDMtMS40IDUuNDAzLTEuNTUgMTAuNS0uNDUgMTUuMzAyIDEuMDk4IDQuNzk2IDMuMDQ3IDkuMDUgNS44NTIgMTIuNzUgMi43OTcgMy43MDMgNi40IDYuNjUyIDEwLjc5NyA4Ljg1IDQuMzk3IDIuMiA5LjE5OCAzLjI5OCAxNC40IDMuMjk4aDE5LjJjMy42MDIgMCA2LjU0NyAxLjQ1MyA4Ljg1MiA0LjM1MiAyLjI5NyAyLjkwMiAyLjk0NSA2LjE0OCAxLjk1IDkuNzVsLTEyIDQ0LjM5OGgtMjFjLTE0LjQwMyAwLTI3LjY1My0zLjE0OC0zOS43NS05LjQ1LTEyLjEwMi02LjMtMjIuMTUzLTE0LjY0OC0zMC4xNTMtMjUuMDUtOC0xMC4zOTUtMTMuNDU0LTIyLjI0Ni0xNi4zNS0zNS41NDctMi45LTEzLjMtMi41NS0yNi45NSAxLjA1Mi00MC45NTNsMS4yLTQuNWMyLjU5Ny05LjYwMiA2LjY0OC0xOC40NSAxMi4xNDgtMjYuNTUgNS41LTguMDk4IDEyLTE1IDE5LjUtMjAuNyA3LjUtNS43IDE1Ljg1LTEwLjE0OCAyNS4wNS0xMy4zNTIgOS4yLTMuMTk1IDE4Ljc5Ny00Ljc5NiAyOC44LTQuNzk2IiBmaWxsPSIjZmY2YzJjIi8+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBkPSJNMTIzLjg5IDI0MEwxODIuOTkgMTguNjAyYzEuNTk4LTUuNTk4IDQuNTk4LTEwLjA5OCA5LTEzLjVDMTk2LjM4OCAxLjcgMjAxLjQ4NCAwIDIwNy4yODggMGg2Mi43YzE0LjQwMyAwIDI3LjY1IDMuMTQ4IDM5Ljc1IDkuNDUgMTIuMTAyIDYuMyAyMi4xNTMgMTQuNjU1IDMwLjE1MyAyNS4wNSA3Ljk5NyAxMC40MDIgMTMuNSAyMi4yNTQgMTYuNSAzNS41NSAzIDEzLjMwNSAyLjU5NCAyNi45NTQtMS4yMDIgNDAuOTVsLTEuMiA0LjVjLTIuNTk3IDkuNjAyLTYuNTk3IDE4LjQ1LTEyIDI2LjU1LTUuMzk4IDguMDk4LTExLjg0NyAxNS4wNTItMTkuMzQ3IDIwLjg0OC03LjUgNS44MDUtMTUuODU1IDEwLjMwNS0yNS4wNSAxMy41LTkuMiAzLjIwNC0xOC44MDUgNC44MDUtMjguODA1IDQuODA1aC01NC4yOTdsMTAuOC00MC41YzEuNi01LjQwMiA0LjYtOS44IDktMTMuMjAzIDQuMzk2LTMuMzk4IDkuNDk3LTUuMTAyIDE1LjMwMi01LjEwMmgxNy4zOThjNy4yIDAgMTMuNjUzLTIuMiAxOS4zNTItNi41OTcgNS42OTUtNC4zOTggOS40NDUtMTAuMDk3IDExLjI1LTE3LjEgMS4zOTQtNC45OTcgMS41NDctOS45LjQ0NS0xNC43LTEuMS00LjgtMy4wNS05LjA0Ny01Ljg0OC0xMi43NS0yLjgtMy42OTUtNi40MDItNi42OTUtMTAuNzk2LTktNC40MDYtMi4yOTctOS4yMDYtMy40NS0xNC40MDItMy40NUgyMzMuMzlsLTQzLjggMTYyLjkwM2MtMS42MDYgNS40LTQuNjA2IDkuNzk3LTkgMTMuMTk1LTQuNDAzIDMuNDA3LTkuNDA2IDUuMTAyLTE1IDUuMTAyaC00MS43IiBmaWxsPSIjZmY2YzJjIi8+PC9nPjwvc3ZnPgo=) no-repeat scroll center top transparent;
  background-size: 25px auto;
}
    </style>
    <!--[if IE 6]>
    <style type="text/css">
        img {
            behavior: url(/cPanel_magic_revision_1352233599/unprotected/cp_pngbehavior_login.htc);
        }
    </style>
    <![endif]-->

    <script>
    window.DOM = { get: function(id) { return document.getElementById(id) } };
    </script>
</head>
<body class="">




    <p class="logo"><img class="main-logo" src="/cPanel_magic_revision_1457841996/unprotected/cpanel/images/cpanel-logo.svg" alt="logo"></p>



<div class="error_notice">
    <div id="error-wrapper">
        <div id="error_msg_contents">
            <h2>HTTP error 404</h2>
    <p>The requested page was not found.</p>
    <h2>Possible reasons why you are seeing this page:</h2>
    <ul>
        <li>A bookmarked URL may have changed since you last visited.</li>
        <li>The URL was entered incorrectly.</li>
        <li>The URL was entered with inaccurate capitalization (URLs are <a href="http://wikipedia.org/wiki/Case_sensitivity">case sensitive</a>).</li>
    </ul>
    <p>Please re-check the URL you are trying to reach. (<a href="javascript:history.back()">Go Back</a>)</p>

        </div>
    </div>
</div>
    <div class="copyright">Copyright© 2019 cPanel, Inc.
    <br /><a href="https://go.cpanel.net/privacy" target="_blank">Privacy Policy</a></div>

</body>

</html>

我的php代码段如下:

<?php
    require("../libs/xmlapi.php"); // this can be downlaoded from https://github.com/CpanelInc/xmlapi-php/blob/master/xmlapi.php

    class CpanelOperation {
        private $cpanelCred = array("url"=>"localhost","port"=>2083,"user"=>"myCpanelUsername", "pwd"=>"MyCpanelpwd");
        private $xmlapi;
        private $dbUser = array("userName"=>"dbUserName","pwd"=>"dbuserPwd"); // The user already exists and has access to other DB's

        public function __construct(){
            $this->xmlapi = new xmlapi($this->cpanelCred['url']);
            $this->xmlapi->set_port($this->cpanelCred['port']);  
            $this->xmlapi->password_auth("".$this->cpanelCred['user']."","".$this->cpanelCred['pwd']."");    
            $this->xmlapi->set_debug(1);//output actions in the error log 1 for true and 0 false 
        }
        public function createDB($dbName){
            //create database    
            $createdb = $this->xmlapi->api1_query($this->cpanelCred['user'], "Mysql", "adddb", array($dbName));
            if($createdb){
                $user = $this->assignUser($dbName);
                if($user){
                    return true;
                }
                else{
                    echo "User not assgned to the DB";
                }
            }
            else{
                echo "Unable to create db in cpanel again!";
            }
        }

        public function assignUser($dbName){
            $dbNameInCPanel = $this->cpanelCred['user']."_".$dbName;
            $userInCPanel = $this->cpanelCred['user']."_".$this->dbUser['userName'];
            //add user 
            $addusr = $this->xmlapi->api1_query($this->cpanelCred['user'], "Mysql", "adduserdb", array($dbNameInCPanel, $userInCPanel, 'all'));
        }
    }
?>

关于如何解决此问题的任何线索?

提前谢谢!是PHP的新手,如果我听起来很傻,请忍受!

1 个答案:

答案 0 :(得分:0)

好吧..因此,经过大量的研究,试验和成功,我终于设法弄清楚了。我将解决方案放在这里,以便它可以帮助面临类似问题的人。

我没有使用xmlapi,而是使用了uapi,下面的代码段将创建一个数据库并向用户授予对该数据库的访问权限。

function myFunction(numberOfRows) {

  var arr = [];
  var value = "";
  var slots = numberOfRows * 2 - 1;
  var spaceSlots, asteriskSlots, spaces;

  for (var i = 0; i < numberOfRows; i++) {
    asteriskSlots = i * 2 + 1;
    spaceSlots = Math.floor((slots - asteriskSlots)/2);
    spaces = new Array(spaceSlots).fill(' ').join('');
    value = spaces + '*'.repeat(asteriskSlots) + spaces;
    arr.push(value);
  }
  return arr;
}

console.log(myFunction(20));

差不多就可以了! :)