Php Exec外部python脚本 - 权限被拒绝

时间:2015-08-20 13:33:04

标签: php python shell exec

我无法从Exec

运行命令行脚本
$exec = exec($command, $output, $return );

我尝试了passthru,shell_exec,系统,但显然这不是问题。

sudo chown -R www-data:www-data /root/path/nonce.py
sudo chmo 775 /path/nonce.py
sudo chmo 777 /path/nonce.py
sudo chmo 755 /path/nonce.py

没有帮助

exec("python -V 2>&1");

作品

但是

/usr/bin/python /root/path/nonce.py 

 Array ( [0] => /usr/bin/python: can't open file '/root/path/nonce.py': [Errno 13] Permission denied ) 

dosent

在nginx和php5-fpm上运行

2 个答案:

答案 0 :(得分:1)

您需要考虑Python脚本路径上每个目录的权限。这意味着:

/root
/root/path
/root/path/nonce.py

root帐户的权限自然受到限制。如果你看一个root的主目录:

$ ls -ld /root
dr-xr-x---. 9 root root 4096 Aug 20 23:50 root

您会看到只有root用户和群组root内的用户才能阅读或列出/root的内容。

将脚本放在root的主页上是一个坏主意。假设您的脚本是CGI脚本,有更合适的位置,例如/var/www/cgi-bin。在我的系统上:

$ ls -ld /var/www
drwxr-xr-x. 4 root root 4096 Jul 17 17:22 /var/www
$ ls -ld /var/www/cgi-bin
drwxr-xr-x. 2 root root 4096 Jul 17 17:22 /var/www/cgi-bin/

可由任何用户阅读和列出。您应该将脚本安装在适合nginx的目录中。

答案 1 :(得分:0)

路径中的其中一个目录可能缺少r相关用户的权限 - 很可能是/root

你可以将python脚本移动到世界可读的目录吗?