簡體   English   中英

如何將參數從 python 傳遞給 php 腳本?

[英]How do I pass an argument to a php script from python?

我有這個 php 腳本:

<?php
$argOne = $argv[1];
print "$argOne";
print "you made it to php";

我有這個 python function 調用它:

def phpCall(argOne):
    script = 'php ./phpScript'
    proc = subprocess.run([script, argOne], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    print(proc)
    script_response = str(proc.stdout,'utf-8')
    return script_response

這就是我運行 python function 時發生的情況:

root@testSrv:~# python3 webAccess.py 
CompletedProcess(args=['php ./phpScript', 'testArgument'], returncode=0, stdout=b'you made it to php', stderr=b'')
you made it to php
root@testSrv:~# 

調用 php 腳本本身:

root@testSrv:~# php phpScript argumentOne
argumentOneyou made it to phproot@testSrv~# 

所以我的論點正在進入 python function,但沒有被正確傳遞給 php 腳本中的 $argv[1],但不確定為什么。 我從類似的事情中抽出了這個語法,我正在從 python 運行 bash 腳本,並且這個語法可以傳遞給 bash 腳本的 $1

使用系統 argv:

import subprocess
from sys import argv

def phpCall(argOne):
    proc = subprocess.Popen("php phpScript.php "+argOne, shell=True, stdout=subprocess.PIPE)
    script_response = proc.stdout.read()
    print(script_response)
    return script_response

phpCall(*argv[1:])

python3 webAccess.py testing!

退貨

testing! you made it to php

python discord 上的 dzil123 幫助了我,雖然 Monnomcjo 的解決方案可能有效,但走這條路:

proc = subprocess.run(['php', '-f', './phpScript', argOne], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

正確格式化 subprocess.run() 調用,而不傳遞我擁有的“腳本”變量,並刪除 shell=True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM