Php 执行外部 python 脚本 - 权限被拒绝
Php Exec external python script - Permission Denied
我无法从 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
路径中的一个目录可能缺少相关用户的 r
权限 - 很可能 /root
您能否将 python 脚本移动到一个全球可读的目录?
您需要考虑 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 的目录中。
我无法从 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
路径中的一个目录可能缺少相关用户的 r
权限 - 很可能 /root
您能否将 python 脚本移动到一个全球可读的目录?
您需要考虑 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 的目录中。