sed在SSH中正常工作,而不是在PHP中

所以,我有下面的行,我用PHP运行($ addPHPtags);

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

我期望该命令find密钥,并附上一个PHP标签。 但是,当我在PHP中运行它,如果我陷阱命令输出,我得到以下错误:

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

但是,如果我在SSH中运行相同的命令,它工作得很好:

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

我没有想法,我尝试了各种替代scheme,但无济于事。 任何帮助? 谢谢。

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

请注意,正则expression式和input文件之间缺less空格。

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

在你的PHP中放置一个空间,我认为这可能是好的…并双重转义换行符。 你为什么不直接在PHP中进行转换?

你可能需要加倍转义换行符。 尝试:

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