我想在 php 网页中运行一个 shell 脚本来检查我的系统 (Ubuntu 12.04) 上运行的一些进程。我在 Google 上找到了相关内容,shell_exec()
但在加载 php 时我无法运行该脚本。
这是我使用的 php 代码。
$output = shell_exec('./dirlist.bash');
echo "<pre>$output</pre>";
我得到的 html 片段
<pre></pre>
也尝试过$output = shell_exec('sudo -u www-data ./dirlist.bash');
目录列表做ls -l (仅用于测试脚本和 shell_exec)
我认为这不是权限问题。运行目录授予所有用户的写入和执行权限(这里我应该小心一点)。
drwxrwxrwx 4 meteo meteo 4096 mar 11 15:20 RAMS
已将用户 www-data 添加到 sudoers 文件中,以备不时之需
www-data ALL = (meteo) NOPASSWD: /home/meteo/www/RAMS/dirlist.bash
提前致谢
答案1
您可能需要在调用脚本之前将 chdir 切换到正确的目录。这样,您就可以在调用 shell 命令之前确保脚本“在”哪个目录中。
$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);
echo "<pre>$output</pre>";