Php 从web浏览器执行python脚本

Php 从web浏览器执行python脚本,php,python,proxy,squid,Php,Python,Proxy,Squid,我有一个Linux代理服务器(RaspberryPi-3)在squid上运行。我想使用squid网页上的HTML按钮启动squid服务。使用此按钮,我尝试执行python程序来启动squid服务: #!/usr/bin/env python import os os.system ("sudo service squid restart") 但从网页上看,它不起作用 从浏览器打开squid的其他选项有哪些 # Importing flask module in the project is m

我有一个Linux代理服务器(RaspberryPi-3)在squid上运行。我想使用squid网页上的HTML按钮启动squid服务。使用此按钮,我尝试执行python程序来启动squid服务:

#!/usr/bin/env python
import os
os.system ("sudo service squid restart")
但从网页上看,它不起作用

从浏览器打开squid的其他选项有哪些

# Importing flask module in the project is mandatory 
# An object of Flask class is our WSGI application. 
from flask import Flask 

# Flask constructor takes the name of 
# current module (__name__) as argument. 
app = Flask(__name__) 

# The route() function of the Flask class is a decorator, 
# which tells the application which URL should call 
# the associated function. 
@app.route('/') 
# ‘/’ URL is bound with hello_world() function. 
def start_squid():
    import os
    os.system ("sudo service squid restart")
    return 'Success'

# main driver function 
if __name__ == '__main__': 

    # run() method of Flask class runs the application 
    # on the local development server. 
    app.run() 
如上所述编写一个简单的烧瓶api。 在Html按钮上,对该烧瓶url进行get/post ajax调用,以便烧瓶控制器启动squid


在控制器中也处理异常

您可以使用子进程来实现结果

import subprocess

subprocess.call(['sudo', 'squid', 'restart'])

但是当我们将子进程与sudo命令一起使用时,意味着它可能会要求密码来执行该命令。

您添加了PHP标记,因此我假设您实际上使用PHP作为web脚本语言

不需要Python,您可以直接从PHP执行命令 首先,您需要启用
www-data
用户在不使用
sudo
的情况下运行命令

sudo visudo  # you edit the /etc/sudoers with this program
将以下行添加到文件中,然后保存

www-data ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart squid
当设置了正确的权限时在PHP端这应该相当简单:

<?php

shell_exec ("service squid restart")

我已经授予了执行python脚本“$sudo chmod+x var/www/html/script.py”的权限。他正在使用PHP,并且想调用python脚本,完全没有必要为这个问题引入额外的复杂性。可能规则集不适用于用户,重新启动后您能再试一次吗?PHP是否会发出某种错误消息?PHP错误消息: