我已经在 PHP 中设置了 SSH 使用,并且大部分功能均能正常工作。
现在我想要做的是编辑文件中的一行并将其替换回去。它可以直接在服务器上运行,但似乎无法与 PHP 文件一起使用。以下是我正在尝试的方法。
$new_line1 = 'Line $I want to add - The $I has to go into the file as it is';
$new_line2 = 'Ending $text of the line - $text again goes into file;
$query = "Addition to line";
$exec1= 'cd /root; perl -pe "s/.*/' ;
$exec2= '/ if $. == 37" Edit.sh > Edited.sh';
$new="$exec1$new_line1$query$new_line2$exec2";
$edit="cd /root/mp; cp Edited.sh Edit.sh";
echo $ssh->exec($new);
echo $ssh->exec($edit);
现在的问题是,直接在 SSH 中运行 perl 命令没有任何错误,但是当我通过 PHP 运行该命令时,出现错误:替换操作未在 -e 第 1 行终止。我想知道为什么它会以这种方式工作而不是那样工作?
答案1
哦,这看起来像是一场即将发生的安全性和可靠性灾难。
简短的回答:$exec1 中有一个开头的引号,但我找不到匹配的结尾引号。
更一般地讲,如果有人设法将引言偷偷放入第 1 行或第 2 行,就会出错。这基本上为任何有权访问的人提供了一个 Web 界面,可以在您的计算机上运行任意代码……