首页 > 解决方案 > 如何在 php 中使用 exec() 函数运行 python 文件

问题描述

这是我的 php 表单(form1.php)

<html>
<body>

<form action="process1.php" method="post">
E-mail: <input type="text" name="email"  required ><br><br>
Password: <input type="text" name="pass"  required ><br><br>
<input type="submit">
</form>
        <html>
    <body>

进程.php

    <?php $email = $_POST["email"]; ?>
    <?php $pass  = $_POST["pass"]; ?>
    
    
    <?php echo($email) ?>    <br>
    <?php echo($pass) ?>   <br> 
   

我想使用 $email , $pass 来自 php 的变量值。我想使用python将数据从变量发送到我的salesforce帐户到自定义对象......

蟒蛇文件

import requests
import json
from simple_salesforce import Salesforce

sf = Salesforce(username="USER", password= "PWD",security_token="" )
print(sf)
params = {
    "grant_type": "password",
    "client_id": "X0000XXXX", 
    "client_secret": "XX00000X",
    "username": "XXX0XX", 
    "password": "XX0XX"
}

dataset = [{'email__c':'$email(this should be the variable from php)', 'password__c': '$pass (this should be the variable from php) '}]
sf.bulk.aryan__c.insert(dataset,batch_size=1,use_serial=True)
    
   

标签: pythonphp

解决方案


首先,您需要使您的 python 文件 CLI 兼容。你需要抓住论点。最简单的方法是这样的:

import sys

def myFunc(user, pwd):
    print(user,pwd)

if __name__ == '__main__':
    
    if len(sys.argv) >= 3:
        user = sys.argv[1]
        pwd = sys.argv[2]
        myFunc(user, pwd)

还可以查看argparse单击

然后您可以从 PHP 调用脚本并提供凭据。实际上有几种方法可以做到这一点。虽然您的愿望exec不会返回 python 脚本的输出

通路

$output = passthru("python3 myScript.py $user $pwd");

shell_exec

$prog = 'python3 myScript.py '.$user.' '.$pwd;
$output = shell_exec($prog);

执行

exec("python3 myScript.py $user $pwd");  

推荐阅读