1

我在通过 ssh2_exec 通过 php 传递以下命令时遇到问题,命令是

./prog cat <<EOF
a a a 
b b 
c 
d d 
EOF

问题是第一行'cat <<EOF',php 将“EOF”作为一个特殊的词,我希望'<<EOF'pass 作为一个普通的字符串。

有什么可能的解决方案吗?

感谢您的建议


我不懂PHP,所以我会给出一些可能的解决方案。

  1. 只是不要使用EOF。

    ./prog cat <<WHATEVER
    a a a 
    b b 
    c 
    d d 
    WHATEVER
    
  2. 不要使用 here-document,通过 printf 的管道提供标准输入。

    printf 'a a a \nb b \nc \nd d \n' | ./prog cat
    
  3. 当然PHP 为您提供了一些方法来将 stdin 的内容直接提供给ssh2_exec或类似的命令?

4

2 回答 2

0
<?php
echo "a <<EOF b";

显示“ a <<EOF b”。如果 PHP 使用 <

Idk ...也许这是 PECL 的 ssh2 扩展的问题。或者您在另一端使用的外壳可能存在问题。无论哪种情况,我都建议您使用phpseclib,一个纯 PHP SSH2 实现。如果是 PECL 扩展的问题,可以修复它,如果它是 shell 的问题,您可以启用日志记录并查看通过 SSH 连接到底发生了什么。

于 2013-05-28T16:37:31.777 回答
0

我不懂PHP,所以我会给出一些可能的解决方案。

  1. 只是不要使用EOF。

    ./prog cat <<WHATEVER
    a a a 
    b b 
    c 
    d d 
    WHATEVER
    
  2. 不要使用 here-document,通过 printf 的管道提供标准输入。

    printf 'a a a \nb b \nc \nd d \n' | ./prog cat
    
  3. 当然PHP 为您提供了一些方法来将 stdin 的内容直接提供给ssh2_exec或类似的命令?

于 2013-05-28T09:45:38.270 回答