Skip to main content
 首页 » 编程设计

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

2025年05月04日21落叶无声

我无法从 Exec 运行命令行脚本

$exec = exec($command, $output, $return ); 

我试过 passthru,shell_exec,system 但显然这不是问题。

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 )  

剂量

在 nginx 和 php5-fpm 上运行

请您参考如下方法:

您需要考虑 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 的家是个坏主意。 /var/www/cgi-bin 假设你的脚本是CGI脚本,还有更合适的地方。在我的系统上:

$ 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 的目录中。