我通过自制软件安装了一个应用程序(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命令答案 0 :(得分:0)
您的apache安装需要与其尝试执行的文件作为相同的用户/组运行。
您可以将尝试执行的应用程序的文件权限更改为apache / php当前用户/组(或777等)。
或者您可以更改apache / php以作为更加专有的用户/组运行。
您可以将应用程序的方法更改为SSH到您的可执行环境中,并通过SSH执行应用程序。
答案 1 :(得分:0)
当PHP尝试执行某些操作时,它将作为默认的Web服务器用户(apache
,www-data
或httpd
)。确保要运行的命令具有正确的所有权/权限。达到此目的的最简单方法是将您的网络服务器用户添加到新组,例如test
和chgrp test /usr/local/bin/bag