sed 在 SSH 中运行正常,但在 PHP 中却不行

sed 在 SSH 中运行正常,但在 PHP 中却不行

因此,我在 PHP 中使用 exec($addPHPtags) 运行以下行;

$addPHPtags = "/bin/sed -i '/<BODY BGCOLOR=\"#FFFFFF\">/ a\ <?php \n ?> '" . $instance['file'] . " 2>&1";

我希望该命令能找到密钥并将其附加到 php 标记中。但是,当我在 PHP 中运行它时,如果我捕获命令输出,则会收到以下错误:

[0] => /bin/sed: -e expression #1, char 39: unknown command: `?'

但是,如果我在 SSH 中运行相同的命令,它可以完全正常工作:

/bin/sed -i '/<BODY BGCOLOR=\"#FFFFFF\">/ a\ <?php \n ?>' file.php

我没什么主意了,我尝试了各种替代方案,但都无济于事。有什么帮助吗?谢谢。

答案1

/bin/sed/ -i '/<BODY BGCOLOR="#FFFFFF">/ a\ <?php \n ?> 'INPUTFILE` 2>&1

请注意,正则表达式和输入文件之间缺少一个空格。

$addPHPtags = "/bin/sed -i '/<BODY BGCOLOR=\"#FFFFFF\">/ a\ <?php \n ?> '" . $instance['file'] . " 2>&1";
#                                                                       ^^

在 PHP 中放置一个空格,我认为这样可能没问题...然后双击换行符。你为什么不直接在 PHP 中进行转换?

答案2

您可能需要对换行符进行两次转义。尝试:

$addPHPtags = "/bin/sed -i '/<BODY BGCOLOR=\"#FFFFFF\">/ a\ <?php \\n ?> '" . $instance['file'] . " 2>&1";

相关内容