我正在尝试使用shell_exec
通过PHP执行命令。 PHP文件由Apache托管在我的Ubuntu服务器上。
当我运行时:
echo shell_exec("ps ax | grep nginx");
然后我会看到数据。但是当我运行另一个命令时,例如:
echo shell_exec("cat /usr/local/nginx/config/nginx.config");
然后它根本没有显示任何东西。但是,当我复制该命令并将其粘贴到我的终端中时,它会正常执行。
我的Apache服务器以用户www-data
运行。所以我编辑了sudoers
并添加了这一行:
www-data ALL=(ALL:ALL) ALL
我知道这是一个安全风险,但我想确保(目前)www-data
能够执行所有命令。但是,由于某种原因,我仍然无法使用我的PHP脚本执行所有命令。
任何人都知道该怎么做?
答案 0 :(得分:0)
您是否阅读了http://php.net/manual/en/function.shell-exec.php
评论部分有很多讨论。热门评论是:
如果您正在尝试运行" gunzip -t"等命令。在shell_exec中获取空结果,您可能需要在命令末尾添加2>& 1,例如:
永远不会工作: echo shell_exec(" gunzip -c -t $ path_to_backup_file");
应该工作: echo shell_exec(" gunzip -c -t $ path_to_backup_file 2>& 1");
在上面的示例中,gunzip输出开头的换行符似乎阻止了shell_exec打印其他任何内容。希望这可以节省一两个小时的其他人。
答案 1 :(得分:0)
echo shell_exec(" sudo cat /usr/local/nginx/config/nginx.config");
试试。