You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PHP变量传递至不同服务器上的Python脚本?

PHP向远程Python脚本传递变量的实现方法

本地同目录下的实现方式

PHP端代码

<?php
$var1 = "1";
$var2 = "2";
$var3 = "3";
// 传递变量给本地Python脚本
exec("python /path/to/python/script.py $var1 $var2 $var3");
?>

Python端读取变量代码

import sys

print(sys.argv[1])  # 第一个参数
print(sys.argv[2])  # 第二个参数
print(sys.argv[3])  # 第三个参数

远程Python脚本的变量传递方案

当Python脚本部署在远程服务器时,无法直接通过exec执行本地命令调用远程脚本,需通过HTTP请求传递变量,以下是两种常见实现方式:

方式一:GET请求传递参数

PHP端发送GET请求

通过curl或file_get_contents构造带参数的远程URL:

<?php
$var1 = "1";
$var2 = "2";
$var3 = "3";
// 构造编码后的参数URL
$remoteUrl = "https://example.com/script.py?var1=" . urlencode($var1) . "&var2=" . urlencode($var2) . "&var3=" . urlencode($var3);

// 方法1:使用curl发送请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remoteUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

// 方法2:使用file_get_contents(需开启PHP的allow_url_fopen配置)
// $response = file_get_contents($remoteUrl);

// 可选:处理并输出远程脚本的返回结果
echo $response;
?>

Python端接收GET参数

  • 轻量场景用CGI方式:
import cgi

# 获取GET请求参数
form = cgi.FieldStorage()
var1 = form.getvalue('var1')
var2 = form.getvalue('var2')
var3 = form.getvalue('var3')

# 输出HTTP响应头及结果
print("Content-type: text/html\n")
print(f"Received params: {var1}, {var2}, {var3}")
  • Web场景用Flask框架:
from flask import Flask, request

app = Flask(__name__)

@app.route('/script.py')
def receive_params():
    var1 = request.args.get('var1')
    var2 = request.args.get('var2')
    var3 = request.args.get('var3')
    return f"Received params: {var1}, {var2}, {var3}"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

方式二:POST请求传递参数(适合敏感数据)

PHP端发送POST请求

<?php
$var1 = "1";
$var2 = "2";
$var3 = "3";
$remoteUrl = "https://example.com/script.py";

// 构造POST参数
$postData = http_build_query([
    'var1' => $var1,
    'var2' => $var2,
    'var3' => $var3
]);

// 用curl发送POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remoteUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

echo $response;
?>

Python端接收POST参数

  • CGI方式:
import cgi

form = cgi.FieldStorage()
var1 = form.getvalue('var1')
var2 = form.getvalue('var2')
var3 = form.getvalue('var3')

print("Content-type: text/html\n")
print(f"Received params: {var1}, {var2}, {var3}")
  • Flask框架方式:
from flask import Flask, request

app = Flask(__name__)

@app.route('/script.py', methods=['POST'])
def receive_params():
    var1 = request.form.get('var1')
    var2 = request.form.get('var2')
    var3 = request.form.get('var3')
    return f"Received params: {var1}, {var2}, {var3}"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

内容的提问来源于stack exchange,提问作者Kyles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 04:15:08