Следующими принимает строку и проверяет все файлы на сервере (./*), чтобы увидеть, если указанная строка существует в любых файлах, а затем выводит данные> grep_results.txt:PHP shell_exec команды с переменной
$command = 'grep -ri "any string goes here" ./* > grep_results.txt';
shell_exec($command);
Во всяком случае, если это возможно, я хотел бы передать ему переменную, представленную следующей формы HTML:
<form id='searchform' action='/GREP.php' method='post'>
<div class='form-group'>
<input type='text' name='SearchString' placeholder='Search string...'>
<input type='submit' name='submit' value='Find' class='button'>
</div>
</form>
Я начал делать это:
$string = $_POST['SearchString'];
echo $string;
И, конечно же, любая переданная строка возвращается обратно.
Место, где я застрял, я попытался это и это не сработало:
$string = $_POST['SearchString'];
$command = 'grep -ri "'.$string.'" ./* > grep_results.txt';
shell_exec($command);
Как передать строку в $ $ команде?
код в верхней части (с жестким кодированием строки) не работает правильно уже при вызове его из браузера? 'grep_results.txt' должен быть доступен для записи пользователем веб-сервера, чтобы это работало, и вы _absolutely must_ вызывают' escapeshellarg() 'на' $ string' перед передачей ему '$ command'. http://php.net/manual/en/function.escapeshellarg.php –