2012-01-09 8 views
1

私は、スタンドアロンの勝利アプリとコンソールアプリにmatlabスクリプトをコンパイルしました。このスクリプトは、image_process pic1.pngを使用してコマンドラインから呼び出すことができます。 exeが実行され、結果として文字列が生成されます。 いいえPHPでデプロイしたいです。私はメインのウェブサイトのディレクトリにアップロードと呼ばれるフォルダを追加しました。私は、このフォルダ内の画像上で実行するために、MATLAB EXEを呼び出すためにPHPを実行する必要があります。PHPからmatlab exeがうまく動作しない

私は私のPHPスクリプトに行きます。私は私のアップロードディレクトリを定義します。

define("UPLOAD_DIRECTORY","./uploads"); // defines the uploads directory 

その後、私は私のイメージプロセッサへのパスを追加します。 ( "IMAGE_PROCESSORE"、のdirname(dirnameは(FILE)) "/ image_process.exeを"。)定義します。最後に

私がように私のプロセスを設定:私はのように私のPHPを呼び出すときに

case "process": 
    $res=array(); 
    $pic=isset($_REQUEST["pic"])?trim($_REQUEST["pic"]):""; 
    if($pic==""){ 
     echo "No picture name is passed"; 
     exit(); 
    } 
    exec(IMAGE_PROCESSORE.' "'.realpath(UPLOAD_DIRECTORY).'" '.$pic,$res); 
    //exec(IMAGE_PROCESSORE." ".$pic,$res); // this one if I define the image_process.exe inside the uploads folder 
    echo"<pre>"; 
    print_r($res); 
    echo"</pre>"; 
break; 

localhost/mysitename/phpresponse.php?act=process&pic=pic1.png 

私は何も出力を取得していないだろうが、私は

localhost/mysitename/phpresponse.php?act=process&pic=c:\xampp\htdocs\mysitename\uploads\pic1.png 
を実行した場合

matlabコンパイル済みファイルが実行され、実行されます

私は本当に混乱していますが、多くのことを試しましたが運がありませんでした...

+1

どちらの場合でもexecに渡す文字列を 'echo'する必要があります。これは、相違点と目的の操作が間違っている場所を確認するのに役立ちます。 – DaveRandom

答えて

0

私は解決策を見つけました。私はスクリプトを2つの引数を呼び出し、execの代わりにコンパイルされたMATLABスクリプトを実行するためにパススルーを使用しました。なぜそれがうまくいったのかは分かりませんが、少なくとも:-)

+0

この場合、自分の答えを編集してSOコミュニティに詳細を提供し、あなた自身の答えを受け入れます。 –

1

あなたのLast Questionに関連しているようですので、ここで回答します。
まず、コンパイルされたMatlab EXEでは、パラメータがコマンドラインで1つずつ渡されます。

私は、スクリプトに与える引数を指定して、コマンドラインでPHPの外EXEファイルを実行して起動します。問題が解決した場合は、PHPスクリプトにあります。チェックしない場合は、MATLABコードを再度チェックしてください。

+0

私はコマンドラインでMATLAB EXEを実行しましたが、うまくいきました。 – Momo

+0

その場合、PHPに何か問題があります。 PHPデバッガを使用して何が起こるかを調べてみてください(SO上で "php debug"を検索してください) –

関連する問題