我无法通过php通过ssh2_exec传递以下命令,命令是
./prog cat <<EOF
a a a
b b
c
d d
EOF
问题是第一行'cat <<EOF'
,php将“EOF”作为特殊单词,我想将'<<EOF'
传递为普通字符串。
这有什么可能的解决方案吗?
感谢您的建议
答案 0 :(得分:0)
我不懂PHP,所以我会提供一些可能的解决方案。
只是不要使用EOF。
./prog cat <<WHATEVER
a a a
b b
c
d d
WHATEVER
不要使用here-document,通过printf管道提供stdin。
printf 'a a a \nb b \nc \nd d \n' | ./prog cat
当然PHP provides some way for you to provide the contents of stdin directly to ssh2_exec
或类似命令?
答案 1 :(得分:0)
<?php
echo "a <<EOF b";
显示“a <<EOF b
”。如果PHP正在使用&lt;“做任何”特殊“的事情。
Idk ...也许这是PECL的ssh2扩展的一个问题。或者可能是你在另一端使用的shell的问题。在任何一种情况下,我都建议您使用phpseclib, a pure PHP SSH2 implementation。如果PECL扩展的问题是解决它,如果它是shell的问题,你可以启用日志记录,看看SSH连接到底发生了什么。