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>&1
とstdin
にstderr
からエラーをリダイレクトし、終了コードをキャプチャするtest.py
私は、ファイルに完全なパスを使用してみました。しかし、仕事ではありません。 – KJ9
どのユーザーがpythonスクリプトを所有していますか?コマンドインジェクションには注意してください。これはうまくいかないでしょう。例: 'Hello。 rm ../ -rf' –
pythonスクリプトの所有者はuserです。そして、そのユーザーは直接サーバー上のスクリプトを実行することができます – KJ9