【问题标题】:How to execute shell command and echo multiple lines from PHP?如何从 PHP 执行 shell 命令并回显多行?
【发布时间】:2013-08-09 00:58:16
【问题描述】:

回复,

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

cat > file <<CHAR
one
two
three
CHAR

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

谢谢。

【问题讨论】:

    标签: php shell shell-exec


    【解决方案1】:

    这样做:

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

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

    【讨论】:

    • 谢谢。我必须使用 PHP_EOL 将我的数组内爆才能使其工作。
    • 您与\n 的连接将不起作用,因为它会生成一个单行文件,并且无法识别换行符。这就是为什么我使用PHP_EOL
    • 我已经测试了这段代码。如果需要转义序列,则需要双引号:"\n".
    【解决方案2】:

    使用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);
    

    【讨论】:

    • popen 是一个有趣的选择。谢谢,我会继续阅读的!
    猜你喜欢
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多