2012-05-11 6 views
4

これは私のLinuxサーバで動作しますが、自宅で自分のWebサイトを自分のPCでテストしていて、PHPでPythonスクリプトを実行しようとしていますが、もちろん\パスは私のLinuxマシン上のIm時に変化します。Windowsの下でphpのpythonスクリプトを実行する

$pyscript = 'C:\\wamp\\www\\testing\\scripts\\imageHandle.py'; 
$python = 'C:\\Python27\\python.exe'; 
$filePath = 'C:\\wamp\\www\\testing\\uploads\\thumbs\\10-05-2012-523.jpeg' 


exec('$python $pyscript $filePath', $output, $return); 

これは私のLinuxマシンでは動作しますが、私のWindowsテストサーバでは動作しません。これをWindows上で実行するにはどうすればよいですか?あなたは答えに読むことができるよう

これがソリューションです:ウィンドウで、コマンドプロンプトから直接

EDITを実行するときにああ、これも動作します。

$cmd = "$python $pyscript $filePath"; 
exec("$cmd", $output); 

は魅力的です。シングルチックをダブルに変更しました。

+0

どのように変数(パラメータ)をPHPからPythonに渡すのですか? – next2u

答えて

5

ファイルパスC:\\wamp\\....がLinuxマシンで動作するのは奇妙です。 とにかく、スラッシュをエスケープしないようにしましたか?

問題は、さまざまなプログラム実行機能を実装するOS固有のメソッドなど、いくつかのことに関連している可能性があります。私はちょうど1つの変数にコマンドを入れ、次に実行するものを見ることができるように変数を出力します。もしあなたが2つのスラッシュを見た場合は、スラッシュをエスケープしようとする必要がありますが、画面に印刷しないと知らないでしょう。

他のプロセス実行関数を試してみてください。 http://www.php.net/manual/en/ref.exec.php

私は、コマンドラインでそれを実行しているようなほとんどの作品を発見した一つは、バッククォート演算子であり、その後、次のsystem

はこのような何かをしようとしています。

$pyscript = 'C:\\wamp\\www\\testing\\scripts\\imageHandle.py'; 
$python = 'C:\\Python27\\python.exe'; 
$filePath = 'C:\\wamp\\www\\testing\\uploads\\thumbs\\10-05-2012-523.jpeg' 

$cmd = "$python $pyscript $filePath"; 
echo $cmd; 
`$cmd` 


$pyscript = 'C:\wamp\www\testing\scripts\imageHandle.py'; 
$python = 'C:\Python27\python.exe'; 
$filePath = 'C:\wamp\www\testing\uploads\thumbs\10-05-2012-523.jpeg' 

$cmd = "$python $pyscript $filePath"; 
echo $cmd; 
`$cmd` 

EDIT:AHHH!私はちょうどそれを理解しました、あなたはあなたのコマンドを1つのダニで包囲しています。これは内部の変数が置き換えられていないことを意味します。代わりに二重引用符を使用してください。これで問題は解決しますが、実行する前にコマンドをエコーし​​て、実行中のコマンドが表示され、このような問題を特定できるようにしておくことをお勧めします。

+0

AHHHHHあなたはそうですよ!!単一のダニがそれを殺した!ありがとうございました! – knittledan

+0

phpからpythonに変数(パラメータ)を渡す方法は? – next2u

関連する問題