运行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脚本时创建的相同。(输出必须更改。) 脚本未运行或未创建文本文件。我不知道现在该怎么办 到目前为止,我一直在这样做: final.php运行shell脚本,然后显示来自PHP的文件内容,php,linux,shell,ubuntu,Php,Linux,Shell,Ubuntu,我有一个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
echo shell_exec("sh /path/to/stackoverflow/example.sh");
echo "done";
根据我的实验结果,这是由于权限问题。 我创建了两个文件: 示例。sh
#!/bin/bash
echo 123
index.php
<?php
echo shell_exec("sh /path/to/stackoverflow/example.sh");
echo "done";
new\u run.sh
是否应该回显任何内容?当shell\u exec()
调用运行时,您是否在网页上看到该输出?是的,它应该会回显。这是一个很长的剧本。不,当shell_exec()调用运行时,我没有看到任何类型的输出。这意味着脚本无法执行(shell_exec()
如果出现错误或脚本没有生成任何输出,则返回null
,在这种情况下,很可能是前者)。PHP运行的系统用户是什么(echo shell_exec('whoami');
),如果该用户不是“anas”,那么/home/anas
有哪些文件夹权限?echo shell_exec('whoami')
返回www-data
这似乎不正确。实际上,它是正确的。这是大多数Web服务器(Apache、nginx)运行时的默认用户。该用户可能不允许访问/home/anas。如果将脚本移到该文件夹之外,脚本是否工作?对于测试,您可以尝试将脚本移动到/tmp,每个人都可以访问该脚本。将权限更改为777,但仍然不起作用。echo shell_exec()
既没有回显任何内容,也没有更新text.txt
。