Как запустить сценарий bash, вызванный формой html?

мой текущий способ сделать это - использовать PHP exec

<?php

$filename = "log.txt";
$text = $_POST['form'];

$fp = fopen ($filename, "w");
if ($fp) {
    fwrite ($fp, $text);
    fclose ($fp);
    exec('/var/www/html/bash.sh');
header('Location: /next.html');
}
else {
    echo ("ERROR.");

}

?>

поэтому я знаю, что скрипт по крайней мере работает, потому что он пишет в журнал.txt нормально, но из того, что я ничего не вижу bash.sh на самом деле работает. Просто в командной строке, если я запускаю

"exec sudo bash /full/path/bash.sh"

затем он выполняет это хорошо. Я не уверен, что это ошибка разрешения или что. Я делаю что-то неправильно, или есть лучший способ сделать это? Заранее спасибо за любую помощь.

5
задан TheNatercacker
источник

1 ответов

как минимум три задачи:

  • код записывает содержимое формы в файл с именем log.txt (в каком-то неизвестном каталоге), а затем выполняет несвязанный /var/www/html/bash.sh
  • код выполняется /var/www/html/bash.sh без указания интерпретатора, поэтому он полагается на правильный shebang в скрипте (и ваш внешний тест указал интерпретатор:sudo bash ...
  • скрипт запускается с id сервера (www-data или что-то такое) а не с root.
0
отвечен xenoid 2017-12-14 11:18:35
источник

Другие вопросы bash php