Итак, у меня есть следующая строка, которую я запускаю в 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";