我有一些用PHP編寫的代碼,但我也開發了用Python編寫的腳本。是否可以從PHP代碼中調用這個Python腳本?如何從PHP調用Python腳本?
如果是的話,我怎樣才能從PHP傳遞參數給Python腳本?
我試圖找到一個沒有任何成功的答案。
有人可以給我一個線索嗎?
我有一些用PHP編寫的代碼,但我也開發了用Python編寫的腳本。是否可以從PHP代碼中調用這個Python腳本?如何從PHP調用Python腳本?
如果是的話,我怎樣才能從PHP傳遞參數給Python腳本?
我試圖找到一個沒有任何成功的答案。
有人可以給我一個線索嗎?
您使用的系統功能:http://php.net/manual/en/function.system.php
事情是這樣的:
$mystring = system('python myscript.py myargs', $retval);
'retval'和'mystring'應該存在什麼。它們是相同的還是不同的,我假定'retval'將包含控制檯上的所有內容。你能幫助理解嗎? – 2015-06-17 19:10:23
混淆來自使用ret ** val **。這個文檔也是錯誤的,因爲他們命名這個return var,然後將它聲明爲retval。但在上面的例子中$ retval是執行狀態,一個整數。而$ mystring是剛剛運行的腳本的輸出的最後一行,即一個字符串。希望這能說明問題。 – Nalaurien 2017-06-06 00:17:07
可執行程序的返回碼(此處爲'$ retval')是一個整數。約定是,'0'沒有錯誤,其他任何東西都是特定於應用程序的錯誤代碼。 – 2017-06-07 07:23:57
我設法讓簡單的功能PY([parametress]代碼),PHP。您幾乎可以將Python代碼包含到您的PHP中。 您也可以將一些簡單的輸入變量傳遞給python進程。你不能得到任何數據傳回,但我相信可以很容易地固定:)使用在虛擬主機不正常(potentionally不安全,系統調用),我創建它PHP-CLI ..
<?php
function PY()
{
$p=func_get_args();
$code=array_pop($p);
if (count($p) % 2==1) return false;
$precode='';
for ($i=0;$i<count($p);$i+=2) $precode.=$p[$i]." = json.loads('".json_encode($p[$i+1])."')\n";
$pyt=tempnam('/tmp','pyt');
file_put_contents($pyt,"import json\n".$precode.$code);
system("python {$pyt}");
unlink($pyt);
}
//begin
echo "This is PHP code\n";
$r=array('hovinko','ruka',6);
$s=6;
PY('r',$r,'s',$s,<<<ENDPYTHON
print('This is python 3.4 code. Looks like included in PHP :)');
s=s+42
print(r,' : ',s)
ENDPYTHON
);
echo "This is PHP code again\n";
?>
是的,你可以只需使用exec()在PHP中調用python程序。簡單的示例程序我已經包括在這裏。
$pyscript = 'G:\wamp\www\ll\test.py';
$python = 'C:\\Python27\\python.exe';
$cmd='$pyscript $python';
exec("$cmd", $output);
你應該指定你的python.exe路徑和你的python文件路徑。它必須在Windows環境中使用。
你可以試試這個:
Python腳本:
test.py: print "hello"
然後PHP腳本
index.php: $i =`python test.py`; echo $i;
是肯定,它應該有可能。但請大家給多一些細節。你是通過命令行還是通過網頁運行 – 2011-03-31 09:13:22
Duplicate - http://stackoverflow.com/questions/166944/calling-python-in-php? – 2011-03-31 09:15:47