您好我正在使用PHP脚本中的shell_exec命令:
$output = shell_exec('ls -l'); print_r($output);
terminal:php test.php
导致目录列表如预期。
切换到我的浏览器我没有输出。
我需要授予用户'apache'的权限,以便它可以执行某些命令,或将用户添加到具有这些权限的组中。 我知道如何将用户添加到组等,我只是想知道什么最佳实践方法是授予这种权限的Apache用户。
这花了我一段时间才弄清楚,所以对别人可能有好处。
问题是我试图在/ etc / sudoers中给apache用户权限,而SELinux是(正确)否认它们。
所以我很快禁用了SELinux的httpd,所有的工作。
这对于公共Web服务器来说远非理想情况。
至于最佳做法,应使用audit2allow来设置许可操作。
如果您在所需的目录中执行ls -Z,您将看到该目录的SELinux权限。
要允许httpd / apache守护进程访问你可以执行的目录(-R选项是为了递归):
chcon -Rv --type=httpd_sys_content_t /desired/path
希望能帮助到你。