2016-05-16 24 views
0

ローカルで実行するHTMLドキュメントを構築しています。クリックするとPythonスクリプトを実行したいというボタンがあります。 PHPで生成されたボタンを使用しようとしています。ボタンに関連付ける入力や出力はありません。スクリプトを実行して、残りのページが使用するイメージファイルとしてグラフを作成します。私は、HTMLの前に、HTML文書でPHPの一部を置くなど、それを行うにはいくつさまざまな方法を、試してみました:PHPを実行してPythonスクリプトを実行するためのHTMLフォームボタン

<?php 
    if (isset($_POST['update'])) 
    { 
     exec('python myScript.py'); 
    } 
> 
<!DOCTYPE html> 
<html> 
<head> 
</head> 
<body> 

<form name="update" method="post" > 
<button name = "update" type="submit"> Update charts </button> 
</form> 

</body> 

は私も同じディレクトリにPHPコードに独自.PHPの文書を作ってみましたそしてようにHTMLコードから呼び出す:

updateCharts.phpがある
<form action = "updateCharts.php" method="post"> 
<input type="submit" name="update" /> 
</form> 

<?php 
    system('cd C:\My\Script\Path'); 
    system('python MyScript.py'); 
?> 

私はまた、「実行」でなく、無駄に「システム」を代入してみました。最初の部分では、ボタンをクリックしても何も起こりません。 2番目は、ボタンをクリックして、PHPドキュメントのテキストに移動します。どちらの場合でも、私のPythonスクリプトは実行されません!

誰かが迷っているのを見てもらえますか?私は確かにPHPの初心者ですので、何か眩しいかもしれません。助けてくれてありがとう!

$command = escapeshellcmd('python /My/Script/Path/myscript.py'); 
// or 
// $command = escapeshellcmd('/My/Script/Path/test.py'); 
// But you have to make your script executable doing: chmod +x myscript.py 
$output = shell_exec($command); 
echo $output; 
+0

ここで/どのようにスクリプトを実行しますか?あなたのホームサーバーですか?どのソフトウェアの設定ですか?ログファイルを参照し、最新のコンテンツを投稿してください。 –

+0

出力を取得して問題の原因を調べてみましたか? – Chris

+0

私はいくつかの容疑者を持っていますが、フィードバックなしで答えを書くことは理にかなっていません。あなたのupdateCharts.phpは動作しません。 –

答えて

0

<?php 
    system('cd C:\My\Script\Path'); 
    system('python MyScript.py'); 
?> 

複数のシステムコールに対して「セッション」を設定することはできません。すべてのシステムコールには独自のシェル環境があります。

少なくともLinuxシステムでは、セミコロンでコマンドをカスケードできます。スクリプトの実行前に設定するための作業ディレクトリが必要な場合は、

system('cd C:\My\Script\Path ; MyScript.py'); 

または

chdir('C:\My\Script\Path'); 
system('MyScript.py'); 

を行うしかし、PHPからスクリプトの実行をブロックすることができる可能性のいずれか、またはApacheは、適切なファイルのアクセス権を持っていない可能性がありますスクリプト、or、or、orに。

ログファイルを確認し、実際に出力されたものを投稿する必要があります。

+0

これを組み込みバージョンのif文とupdateCharts.php行に入れてみましょう:\ – Apex7

+0

これはどうでしょうか?$ command = escapeshellcmd( 'C:\ Python27 \ python C:\ python_files \ test.py '); $出力= shell_exec($コマンド); echo $ output; – user6195996

+0

文字列をエスケープする必要があります。安全でないユーザー入力の場合は、実行可能ファイルを内部に入れたくありません。 "dir"/path/to/public/'。escapeshellcmd($ unsafeInput)。' "'' –

0

これが動作しないことができます。これは何

+0

Apache?それは暗黙のうちに実行されていますか?私はWindows 10のPC上でこれをローカルに実行しています。それは非常に基本的なプロジェクトです!ログを探したい場所がわからない。ログを生成するために追加する必要があるコードはありますか? – Apex7

+0

@ Apex7 - ああ、あなたはIISを実行していますか? ApacheはクロスプラットフォームのWebサーバーです。 IISはMicrosoftのインターネットサーバーです。この場合、http://www.iis.net/learn/manage/configuring-security/application-pool-identitiesを参照してください。 –

関連する問題