Назад | Перейти на главную страницу

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

У меня нет идей, пробовал разные альтернативы, но безуспешно. Любая помощь ? Спасибо.

/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?

Вероятно, вам нужно дважды экранировать новую строку. Пытаться:

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