繁体   English   中英

如何在不使用 exec() 的情况下在 PHP 中执行 mysqldump?

[英]How to perform mysqldump in PHP without using exec()?

我正在尝试运行此代码:

$cmd = '/usr/bin/mysqldump --user=myUsername --password="myPassword" --host=localhost myDatabase > myOutputSqlFilePath;
exec($cmd, $output, $return_val);

但它失败了,因为似乎exec()不适用于此特定服务器上的 PHP。 (我已经通过尝试运行exec("mkdir test-dir", $output, $return_val);来确认这一点,但它无法创建测试目录。)

所以,我想知道在 PHP 中执行 mysqldump 还需要哪些其他选项?

现在,我有一些相关的 PHP 代码来创建数据库,如下所示:

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

    $buildRequest = "/frontend/paper_lantern/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);
}

所以也许有这样的东西可以用来执行mysqldump?

或者也许有一个完全不同的解决方案?

exec()不可用,所以最后我通过使用mysqli和 SHOW CREATE 表然后选择所有行,并使用该数据创建/填充新数据库 - 全部使用mysqli 解决了这个问题。

暂无
暂无

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

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