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 安装需要 运行与其尝试执行的文件相同 user/group。

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

或者您可以将 apache/php 更改为 运行 作为更特权的 user/group。

  • 或者

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

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