2014-11-14 58 views
0

m停留在一個python腳本的web界面,問題是我需要讀取用戶的輸入,並將它們作爲參數值運行在python腳本上,但它不工作繼承人我的代碼python arg values from php

的index.php

<html> 
<body> 

<form action="programa.php" method="post"> 
    Name: <input type="text" name="longitud"><br> 
    E-mail: <input type="text" name="angulo"><br> 
    <input type="submit" value="correr"> 
</form> 

programa.php

<?php $longitud=$_POST["longitud"]; 

    $angulo=$_POST["angulo"]; ?> 
    <h1>Corriendo programa con <?php echo $_POST["longitud"]; ?> mm de longitud<br> 
    y <?php echo $_POST["angulo"]; ?> grados de angulo</h1> 
        <br> 
        <br> 
        <br> 
        <?php 
    $a=exec('sudo python /var/www/python/programa.py $longitud $angulo'); 
    echo $a; 
    ?> 

我參觀了錯誤日誌和印刷我這個

Traceback (most recent call last): 
File "/var/www/python/programa.py", line 7, in <module> 
script,long_barra,angulo = argv 
ValueError: need more than 1 value to unpack 
[Mon Nov 10 22:36:53 2014] [error] [client 192.168.1.3] PHP Notice: Undefined 
index: longitud in /var/www/Maquina/programa.php on line 22 
[Mon Nov 10 22:36:53 2014] [error] [client 192.168.1.3] PHP Notice: Undefined index: 
angulo in /var/www/Maquina/programa.php on line 24 
[Mon Nov 10 22:36:53 2014] [error] [client 192.168.1.3] PHP Notice: Undefined index: 
longitud in /var/www/Maquina/programa.php on line 25 
[Mon Nov 10 22:36:53 2014] [error] [client 192.168.1.3] PHP Notice: Undefined index: 
angulo in /var/www/Maquina/programa.php on line 26 
Traceback (most recent call last): 
File "/var/www/python/programa.py", line 7, in <module> 
script,long_barra,angulo = argv 
ValueError: need more than 1 value to unpack 
Traceback (most recent call last): 
File "/var/www/python/programa.py", line 7, in <module> 
script,long_barra,angulo = argv 
ValueError: need more than 1 value to unpack 

上programa.php腳本讀取後的值,而是犯規傳遞的argv到Python腳本,我怎麼能提前解決這個

TX

+0

只是一個建議的基礎上,根據用戶輸入執行命令時,不要使用sudo一個Web界面,如果你用escapeshellarg()過濾。 – Jonnycake 2014-11-14 22:26:16

回答

0

您的參數未傳遞給python的原因是您的exec()調用中的單引號。這將向python發送字符串「$ longitudinal」和「$ angulo」,而不是所述變量的值。相反,使用雙引號,PHP將用它們的值替換變量。

所以,你的電話exec()改變:

$a=exec("sudo python /var/www/python/programa.py {$longitud} {$angulo}"); 
// ^    notice the double quotes     ^ 

花括號沒有必要在這種情況下,但我建議他們可讀性。

或者,您也可以直接從$_POST訪問值,而像這樣分配給變量:在關於安全

$a=exec("sudo python /var/www/python/programa.py {$_POST['longitud']} {$_POST['angulo']}");