Запуск сценария оболочки, а затем отображение содержимого файла из PHP - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть страница PHP (расположена по адресу: / var / www /), на которой должен быть запущен скрипт оболочки (расположен по адресу: /home/anas/kaldi/egs/voxforge/s5/new_run.sh) и текстовый файл ( находится по адресу: /home/anas/kaldi/egs/voxforge/s5/results/text.txt), который будет сгенерирован после выполнения сценария примерно через 10-15 секунд.

Я хочу просто нажать кнопку в PHP, и он запускает скрипт, а когда текстовый файл создается в соответствующем каталоге, он должен отображаться на странице PHP.

Проблема в том, что текстовый файл не обновляется. Это тот же самый старый, который я создал, когда выполнял сценарий оболочки вручную. (Выход должен измениться.)

Либо скрипт не запущен, либо он не создает текстовый файл. Я не могу понять, что делать сейчас.

Я делал это до сих пор:

final.php

<html>

<body>
  <?php
if (isset($_POST['Submit1'])) {
 echo shell_exec('sh /home/anas/kaldi/egs/voxforge/s5/new_run.sh');
sleep(15);
echo file_get_contents("/home/anas/kaldi/egs/voxforge/s5/results/text.txt");
  }
 ?>
    <form action="final.php" method="post">
      <input Name="Submit1" type="submit">
    </form>

</body>

</html>

1 Ответ

0 голосов
/ 29 апреля 2018

на основании моих экспериментальных результатов, это связано с проблемами с разрешениями.

Я создал два файла:

example.sh

#!/bin/bash
echo 123

index.php

<?php
echo shell_exec("sh /path/to/stackoverflow/example.sh");
echo "done";

когда разрешение example.sh равно 777 , все в порядке.

когда разрешение example.sh равно 000 ,

выведет недостаточные разрешения в терминале, а ничего не выведет в браузере.

Я заметил, что вы должны быть в браузерной среде, поэтому ничего не выдаст и ошибок не будет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...