【发布时间】:2018-10-09 10:25:06
【问题描述】:
我有一个 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 脚本时创建的一样旧。 (输出必须改变。)
脚本未运行或未创建文本文件。我现在不知道该怎么办。
到目前为止我已经这样做了:
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>
【问题讨论】:
-
new_run.sh应该回应什么吗?shell_exec()调用运行时,您是否在网页上看到该输出? -
是的,它应该回显。这是一个很长的脚本。不,当 shell_exec() 调用运行时,我看不到任何类型的输出。
-
这意味着脚本无法执行(
shell_exec()返回null如果有错误或如果脚本没有生成任何输出,在这种情况下它是可能是前者)。 PHP 以哪个系统用户身份运行 (echo shell_exec('whoami');),如果该用户不是“anas”,/home/anas有哪些 文件夹 权限? -
echo shell_exec('whoami');返回的www-data似乎不正确。 -
事实上,确实如此。这是大多数网络服务器(Apache、nginx)运行的默认用户。可能不允许该用户访问 /home/anas。如果将脚本移出该文件夹,脚本是否有效?对于测试,您可以尝试将脚本移动到 /tmp,每个人都可以访问。