我通过自制安装了一个应用程序(bagit),并试图从我的本地Apache服务器(安装在OSX上)执行一个shell命令。
我的PHP如下所示:
$cmd = 'bag create '.$targetFolder.' '.$sourceFolder.' --baginfotxt '.$bagInfoFile ." 2>&1";
$output = shell_exec($cmd);但是,我收到以下错误消息:
/bin/bash: /usr/local/bin/bag: Permission denied
如何让Apache访问位于`/usr/local/bin中的bash命令?
发布于 2015-01-07 20:01:32
您的apache安装将需要作为与其试图执行的文件相同的用户/组运行。
您可以将要执行的应用程序的文件权限更改为与apache/php当前用户/组相同的文件权限(或777等)
或者您可以更改apache/php,使其作为一个更隐私的用户/组运行。
您可以将应用程序的方法更改为SSH到您的可执行环境中,并在SSH上执行应用程序。
发布于 2015-01-07 20:10:07
当PHP试图执行某些内容时,它将充当默认的web服务器用户(apache、www-data或httpd)。确保要运行的命令具有正确的所有权/权限。实现这一目标的最简单方法是将您的web服务器用户添加到一个新的组中,比如test和chgrp test /usr/local/bin/bag。
https://stackoverflow.com/questions/27827632
复制相似问题