PHP 执行 shell 命令权限被拒绝


PHP execute shell command 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 命令?

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

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

或者,您可以更改 Apache/PHP 以更特权的用户/组运行。

  • 或者

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

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