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

Подстановка строки через 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. Я хочу знать, почему это должно работать именно так, а не так?

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

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

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