PHP execute shell command permission denied

夙愿已清 提交于 2020-01-05 07:59:30

问题


I installed an application (bagit) via homebrew and am trying to execute a shell command from my local Apache server (installed on OSX).

My PHP looks like this:

$cmd =  'bag create '.$targetFolder.' '.$sourceFolder.' --baginfotxt '.$bagInfoFile ." 2>&1";
$output = shell_exec($cmd);

However, I am getting the following error message:

/bin/bash: /usr/local/bin/bag: Permission denied

How can I give Apache access to the bash command located in `/usr/local/bin?


回答1:


Your apache install will need to be running as the same user/group as the files its trying to execute.

You can either change the file permissions of the application you are trying to execute to the same as apache/php current user/group (or 777 etc..)

or you can change apache/php to run as a more priviliaged user/group.

  • Alternatively

You could change the method of your application to SSH into your executable environment and execute the application over SSH.




回答2:


When PHP tries to exec something, it will do as the default web server user (apache, www-data or httpd). Make sure that the command to run has the right ownership / permissions. The easiest way to reach this is to add your web server user to a new group, lets say test, and chgrp test /usr/local/bin/bag



来源:https://stackoverflow.com/questions/27827632/php-execute-shell-command-permission-denied

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!