PHP调用shell命令运行python脚本 只能在终端显示,在浏览器无效的解决(nginx)

本文介绍了解决Python脚本在浏览器上无法正常运行的问题。通过调整PHP配置解除exec限制,赋予网页sudo权限,并确保所有导入的模块都可在当前环境中访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在linux中可以用shell来运行的python脚本(在python中使用了import configparser),同样的命令运行脚本只能在shell中显示结果,在浏览器上无效的解决。

第一步,打开PHP探针,查看在disable_functionsexec是否被禁用,如果被禁用,请到/etc/nginx中的php.ini中删掉exec

第二步, 进入终端,sudo/etc/sudoers权限 ,chmod u+w 使其可以写文件,文件中加上www-data ALL=(ALL) NOPASSWD:ALL

表示赋予网页sudo的权限无密码,当然你可以加一个用户。最后再用chmod u-w除去写文件权限。

第三步(python中有import的重点!),如果你在python脚本中使用了这样的语句 import XXXXXX ,请从/usr/local/lib/python2.7/dist-packages/(自己的python是什么样的自己找)中找到import的文件,将其复制到你的直接运行的脚本同目录下,这样不用担心import没有超级用户权限的问题。(我在脚本1里面import了脚本2,脚本2是用pip install 命令下载的)

Nginx通常作为Web服务器运行,而Python是一种通用编程语言,可以用于编写脚本、模块甚至API。如果你想让Nginx通过Python调用Shell命令,你可以采用以下几种方式: 1. **FastCGI** (Fast CGI Interface): Nginx支持FastCGI协议,可以通过这个协议将请求转发给Python应用服务器(如uWSGI、Gunicorn等),然后Python处理请求并返回结果,其中包含了执行Shell命令的结果。 - 配置步骤:在Nginx配置文件里,添加一个FastCGI块指向Python应用,并设置适当的路径和命令行参数。 2. **WSGI** (Web Server Gateway Interface): 同样地,Python应用也可以通过WSGI接口接受来自Nginx的请求,执行Shell命令后再返回结果。 - 安装Python WSGI服务器(如Flask或Django)并配置WsgiHandler。 3. **通过系统调用模块** (subprocess or os module): 如果Nginx作为模块编写,可以直接在模块内部使用Python的`subprocess`模块来执行Shell命令。 - 使用`subprocess.run()`函数执行shell命令,捕获输出结果。 为了实际操作,你需要具备一定的Linux系统管理知识,熟悉Nginx的配置以及Python脚本的编写。以下是简单的示例: ```python import subprocess def execute_shell_command(cmd): output = subprocess.check_output(cmd, shell=True) return output.decode('utf-8') # 在Nginx的location配置中,使用Python模块处理请求 location /shell { include fastcgi_params; fastcgi_pass unix:/path/to/python.fcgi; # 根据实际情况替换FCGI进程地址 fastcgi_param SCRIPT_NAME /shell; fastcgi_param PATH_INFO $uri; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值