从 php 运行 bash 脚本

pac*_*met 5 php bash scripts

我想在 php 网页中运行一个 shell 脚本来检查我的系统(Ubuntu 12.04)上运行的一些进程。谷歌搜索我找到了,shell_exec()但在加载 php 时我无法运行脚本。

这是我使用的php代码。

$output = shell_exec('./dirlist.bash');
echo "<pre>$output</pre>";
Run Code Online (Sandbox Code Playgroud)

和我得到的那段 html

<pre></pre>
Run Code Online (Sandbox Code Playgroud)

也试过 $output = shell_exec('sudo -u www-data ./dirlist.bash');

dirlist.bash执行ls -l (仅用于测试脚本和 shell_exec)

我认为这不是权限问题。运行目录为所有用户授予写入和执行权限(我在这里应该小心)。

drwxrwxrwx  4 meteo meteo 4096 mar 11 15:20 RAMS
Run Code Online (Sandbox Code Playgroud)

用户 www-data 已添加到 sudoers 文件中以备不时之需

www-data ALL = (meteo) NOPASSWD: /home/meteo/www/RAMS/dirlist.bash
Run Code Online (Sandbox Code Playgroud)

提前致谢

kam*_*mil 9

在调用脚本之前,您可能需要 chdir 到正确的目录。通过这种方式,您可以在调用 shell 命令之前确保脚本“位于”哪个目录中。

$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);
echo "<pre>$output</pre>";
Run Code Online (Sandbox Code Playgroud)

  • 这与 [SO 上的一段代码](http://stackoverflow.com/questions/11052162/run-bash-command-from-php) 有令人不安的相似之处。给予信贷。 (2认同)