Php 从web浏览器执行python脚本
我有一个Linux代理服务器(RaspberryPi-3)在squid上运行。我想使用squid网页上的HTML按钮启动squid服务。使用此按钮,我尝试执行python程序来启动squid服务: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
#!/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错误消息: