使用Apache的不同用户执行shell脚本

时间:2018-03-08 18:44:47

标签: php bash apache

[Mac OS 13.10.3,PHP7.1,Apache 2.4]

我正在使用php脚本来重新组织我分散在我的主目录结构中不同位置的一些文件。 php部分,首先执行一些复杂的逻辑,我不认为bash可以有效地执行,然后调用bash脚本来执行我需要完成的最终移动操作。

当我从命令行运行php脚本时,它工作正常。但是,我希望能够通过我的localhost apache httpd服务器运行它,这样我就可以在我的浏览器中更好地呈现各种操作的结果。

当我通过浏览器调用php脚本时,bash脚本返回了权限错误。最初我以为我可以通过在bash脚本上设置sudo位来解决这个问题,但这不起作用,脚本仍然在apache userid下运行。 (更多信息here about setuid with scripts。)

有些事情我不想做:
1)更改我的主目录中的权限以使其工作,
2)授予apache用户/bin/mv访问<?php header('Content-Type: text/plain'); $shellResult = array(); $shellReturn = 0; exec("/Users/user/myScripts/move \"" . "/Users/user/myScripts/mytest.pdf" ."\" \"". "/Users/user/myScripts/testDir" ."\" \"". "aNew.pdf" . "\"", $shellResult, $shellReturn); echo var_dump($shellResult); echo $shellReturn; ?> 命令等的权限

我想知道我还能做些什么来让脚本执行移动?

- = - = -

我的DocumentRoot中的php测试脚本:

#!/bin/bash -e

echo -e `whoami`
echo -e "$2"
echo -e "$3"

if [ ! -e "$1" ] ; then
    echo "$1"
    exit 3
else 
    if [ -e "$2/$3" ] ; then
        echo "$1"
        exit 4
    fi
fi
echo -e "MOVING\n"
/bin/mv "$1" "$2/$3"

/ Users / user / myScripts 中的移动 bash脚本:

array(5) {
  [0]=>
  string(4) "_www"
  [1]=>
  string(28) "/Users/user/myScripts/testDir"
  [2]=>
  string(8) "aNew.pdf"
  [3]=>
  string(6) "MOVING"
  [4]=>
  string(0) ""
}
1

我在浏览器中得到的结果(注意错误 1 在最后返回)

SELECT DISTINCT CITY FROM STATION WHERE lcase(CITY) LIKE '%a' OR lcase(CITY) LIKE '%e' OR lcase(CITY) LIKE '%i' or lcase(CITY) LIKE '%o' OR lcase(CITY) LIKE '%u' ORDER BY CITY;

0 个答案:

没有答案