Подстановка строки через PHP в SSH

Я уже настроил использование SSH в PHP, и большинство вещей работает.

Теперь я хочу отредактировать строку в файле и заменить ее обратно. Он работает непосредственно на сервере, но не может заставить его работать с файлами 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);

Теперь дело в том, что выполнение команды perl непосредственно в SSH работает без каких-либо ошибок, но когда я запускаю это через PHP, я получаю сообщение об ошибке: Замена замены не прекращается в строке -e 1. Я хочу знать, почему она будет работать таким образом, а не тот?

1 ответ

Решение

О, это похоже на катастрофу безопасности и надежности, ожидающую, чтобы случиться.

Краткий ответ: в $ exec1 есть открывающая цитата, но я не могу найти соответствующую закрывающую цитату.

В более общем случае, если кому-то удастся пробить кавычку в строку1 или строку2, это пойдет не так. Это в основном обеспечивает веб-интерфейс для любого, кто имеет доступ к нему для запуска произвольного кода на вашем компьютере...

Другие вопросы по тегам