如何执行shell命令并从PHP回显多行?

时间:2013-08-09 00:58:17

标签: php shell shell-exec

RE,

我使用shell命令cat将多行转储到文件中,如下所示:

cat > file <<CHAR
one
two
three
CHAR

这是我的问题:我需要在PHP中使用cat执行相同的shell_exec命令。如何转储数组的内容并使用CHAR终止命令?我知道这听起来很奇怪,但我需要使用sudo创建一个文件,我不想将所有内容转储到临时文件中,然后将sudo cp转储到预期的位置。

感谢。

2 个答案:

答案 0 :(得分:1)

这样做:

shell_exec('cat > file <<EOF
foo
bar
EOF
');

当然,这只有在底层shell支持here-doc语法时才有效。

答案 1 :(得分:1)

使用popen()代替shell_exec()

$filename = 'file';
$text = 'CHAR
one
two
three
';

$cmdline = 'cat > ' . escapeshellarg($filename);
$fp = popen('sudo /bin/sh -c ' . escapeshellarg($cmdline), 'w');
fwrite($fp, $text);
pclose($fp);