如何使用PHP和Xampp在浏览器中运行系统命令?

时间:2010-11-29 06:53:08

标签: php database


我有命令行来备份db和wnat来运行浏览器。我怎么能这样做。因为当我用输入执行下面的代码时它不会给我输出。为什么?我怎样才能实现db备份如果它没有成功。

$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile"; 
print system($command);

3 个答案:

答案 0 :(得分:2)

听起来你想要的是passthru()

根据the documentation,它会将命令的输出直接转储回浏览器。

$ret_val = null;
header("Content-type: application/gzip");
passthru("mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip", $ret_code);
# the extra equals sign below makes sure $ret_val isn't null
if($ret_val !== 0) 
   echo "Failboat";

话虽这么说,这听起来像是一种非常脆弱的备份方式。你最好先将文件保存到磁盘并单独下载。如果你真的想要熟悉它,尝试使用tee将文件写入磁盘,同时将其重新传输回浏览器(警告,这实际上是一个更糟糕的想法)

答案 1 :(得分:1)

我会说其中一项功能systemexec。如果你需要输出exec会更好

system($command)

仅供您参考doc

中的函数签名
string exec ( string $command [, array &$output [, int &$return_var ]] )

和快速摘要

exec($command, $output, $ret_var);
echo "return code: {$ret_var}" . PHP_EOL;
echo "output ------" . PHP_EOL;
foreach($output as $line){
    print $line . PHP_EOL;
}

答案 2 :(得分:0)

Eigther使用mysqladminenglish version),或者您可以在自己的某个网页上使用ajax调用(通过javascript)。