php中exec()的输出是空数组

时间:2015-04-16 19:48:55

标签: php

我有以下代码使用mysqldump执行exec()。它没有工作,我想弄清楚命令行抛出的输出。所以我打印了$output$worked但我得到的只是1和一个空数组

根据手册:If the output argument is present, then the specified array will be filled with every line of output from the command. 但为什么这会抛出一个空阵列呢?我在一些帖子建议的命令末尾包括2>&1,但仍然无效。我想知道在执行此命令时终端正在输出什么。

输出$worked的{​​{1}}是什么意思?

任何帮助将不胜感激!

脚本:

1

输出:

$command='mysqldump --opt -u ' .$db['username'] .' -p' .$db['password'] .' --databases ' .$db['database'] .' > '.$mysqlExportPath .' 2>&1';
$output=array();
exec($command,$output,$worked);

print $worked.'<br>';
print_r($output);

1 个答案:

答案 0 :(得分:0)

  

我想知道在执行此命令时终端正在输出什么。

没有的! (如果你自己尝试过,你会立即看到它)。您的命令将mysqldump的结果定向到$mysqlExportPath表示的路径上的文件。我不知道为什么你希望它转到 stdout

也许一些换行符会让你的代码变得更有用(不,基本上!)更具可读性:

$command
  = 'mysqldump --opt'
  . ' -u ' . $db['username']
  . ' -p' . $db['password']
  . ' --databases ' . $db['database']
  . ' > ' . $mysqlExportPath   // <---- Here you go!
  . ' 2>&1';

删除重定向,或查找文件$mysqlExportPath内的数据;你的电话!