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 服务器用户(apache
、www-data
或 httpd
)执行。确保 运行 的命令具有正确的所有权/权限。达到此目的的最简单方法是将您的 Web 服务器用户添加到一个新组,假设 test
和 chgrp test /usr/local/bin/bag
我通过自制软件安装了一个应用程序 (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 服务器用户(apache
、www-data
或 httpd
)执行。确保 运行 的命令具有正确的所有权/权限。达到此目的的最简单方法是将您的 Web 服务器用户添加到一个新组,假设 test
和 chgrp test /usr/local/bin/bag