首页 > 解决方案 > 运行一个 shell 脚本,然后显示来自 PHP 的文件的内容

问题描述

我有一个 PHP 页面(位于:/var/www/),它必须运行一个 shell 脚本(位于:/home/anas/kaldi/egs/voxforge/s5/new_run.sh)和文本文件(位于: /home/anas/kaldi/egs/voxforge/s5/results/text.txt) 将在脚本运行大约 10 到 15 秒后生成。

我只想单击 PHP 中的按钮并运行脚本,当在相应目录中创建文本文件时,它应该显示在 PHP 页面上。

我得到的问题是文本文件没有被更新。它和我手动执行 shell 脚本时创建的一样旧。(输出必须改变。)

脚本未运行或未创建文本文件。我不知道现在该怎么办。

到目前为止,我已经这样做了:

最终的.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>

标签: phplinuxshellubuntu

解决方案


根据我的实验结果,这是由于权限问题。

我创建了两个文件:

例子.sh

#!/bin/bash
echo 123

索引.php

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

当权限example.sh777时,一切正常。

当权限example.sh000时,

会在终端输出权限不足, 在浏览器中什么也不输出。

我注意到您应该在浏览器环境中,因此不会输出任何内容也不会出现错误


推荐阅读