2017-08-28 9 views
1

私はフォームでデータ入力ウェブページを作った。 そして私は、Webページからの値を使用してサーバー上でpythonスクリプトを実行し、サーバー上に出力ファイルを作成したいと考えています。 これでデータを入力してWebページを送信できます。しかし、pythonスクリプトはサーバー上に出力ファイルを作成していません。どのようにPHP上でPythonを実行できますか?

以下は私のスクリプトです。

まず、私は1test.phpはフォームを使用してtest.py実行し、フォーム上のindex.phpと入力いくつかのテキストに接続して、その下

は、index.phpの第二

<html> 
<body> 

<form action="1test.php" method="get"> 
<input type="text" name="name" /> 
<input type="submit" /> 
</form> 

</body> 
</html> 

で提出しますindex.phpの値。以下は

Pythonスクリプトの前に私のスクリプト作業

<?php 
$name = $_GET['name']; 
$cmd = "python test.py " . $name; 
echo $cmd; 
exec($cmd); 
?> 

1test.phpです。私はWeb上で$ cmdの値を見ることができます。しかし、PHPはPythonを実行できません。 Pythonスクリプトには実行権限があります。 最後に、pythonスクリプトはサーバー上のファイルを作成します。フォームの値は、Pythonの配列データになります。

<?php 

$name = $_GET['name']; 
$cmd = escapeshellcmd("python test.py $name 2>&1"); 

echo "$cmd" . PHP_EOL; 

exec($cmd, $output, $return_var); 

echo "$return_var:" . PHP_EOL; 
print_r($output); 

$outputが行の配列である:

は以下2>&1stdinstderrからエラーをリダイレクトし、終了コードをキャプチャするtest.py

+0

私は、ファイルに完全なパスを使用してみました。しかし、仕事ではありません。 – KJ9

+2

どのユーザーがpythonスクリプトを所有していますか?コマンドインジェクションには注意してください。これはうまくいかないでしょう。例: 'Hello。 rm ../ -rf' –

+0

pythonスクリプトの所有者はuserです。そして、そのユーザーは直接サーバー上のスクリプトを実行することができます – KJ9

答えて

3
import sys 
sip = sys.argv[1] 
with open("doc.txt",'w') as f: 
     f.write(sip) 
f.close() 

試行です。スクリプトが0(値は$return_var)を返す場合、成功を意味します。

関連する問題