PHP执行shell命令权限被拒绝

时间:2015-01-07 19:58:50

标签: php macos apache bash permission-denied

我通过自制软件安装了一个应用程序(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命令

2 个答案:

答案 0 :(得分:0)

您的apache安装需要与其尝试执行的文件作为相同的用户/组运行。

您可以将尝试执行的应用程序的文件权限更改为apache / php当前用户/组(或777等)。

或者您可以更改apache / php以作为更加专有的用户/组运行。

  • 替代地

您可以将应用程序的方法更改为SSH到您的可执行环境中,并通过SSH执行应用程序。

答案 1 :(得分:0)

当PHP尝试执行某些操作时,它将作为默认的Web服务器用户(apachewww-datahttpd)。确保要运行的命令具有正确的所有权/权限。达到此目的的最简单方法是将您的网络服务器用户添加到新组,例如testchgrp test /usr/local/bin/bag