2

カスタム Web アプリケーションで収集した情報を管理ソフトウェアに統合するために実行する必要がある vbscript があります。.vbs は、CodeIgniter 2 に組み込まれている Web アプリケーションと同じフォルダーにあります。

コントローラーのコードは次のとおりです。

public function saveToPM( $budgetType ){
    // run it 
    $obj = new COM( 'WScript.Shell' ); 

    if ( is_object ( $obj ) ) { 
        $obj->Run( 'cmd /C wscript.exe D:\pamtest\myload.vbs', 0, true );
        var_dump($obj->Run);
    } else { 
        echo 'can not create wshell object'; 
    } // end if

    $obj = null;

    //$this->load->view('goodPush');
} // end saveToPM function

php.ini ファイルで DCon を有効にし、dcomcnfg を使用してユーザーの権限を有効にしました。

http://www.sitepoint.com/forums/showthread.php?505709-run-a-vbs-from-phpからコードを借りました。

画面には「コードが実行されました」というメッセージが表示されますが、vbscript は実行されません。

私たちはしばらくこれと戦ってきたので、助けていただければ幸いです。

4

2 に答える 2

2

少し面倒です。を実行して解釈するために呼び出すPHP呼び出しWScript.Shell.Runcmdつまり/c、処理cmd.exeが完了すると終了する). ご覧のとおり、正しく進めなければならないことがかなりあります。:)cscript.exe.vbs

wsh スクリプトの実行を続行する前に、WScript.Shell.Run呼び出しが終了する (変数)のを「待機」して、 PHP が実行を続行できるようにするとどうなりますか?$wait

呼び出しが終了するのを待っていないので、PHP は問題がないと判断し、次の行 (解釈された言語) に進みます。

また、.vbs空のテキスト ファイルを作成することもできますか? 実際に実行されたことを示すためです。

一歩下がってビールを飲むだけで、あなたのところに来ます!Gogo トラブルシューティング!

そして - http://ss64.com/vb/run.html

bWaitOnReturn が TRUE に設定されている場合、Run メソッドはアプリケーションから返されたエラー コードを返します。

于 2012-09-27T06:47:56.740 に答える
2

PHP 5.4.4 が組み込まれた Web サーバーを備えた Windows XP マシンで、スタンドアロンの PHP スクリプト (Codeigniter なし) を使用してコードをテストしました。イベント ビューアーには、ID 1000 の一般的な「アプリケーション エラー」が表示されます)。
ただし、コマンド文字列から「cmd /C」を削除すると問題が解決することも発見しました。
テストに使用した簡単なスクリプトは次のとおりです。

<?php

$obj = new COM('WScript.Shell');
if (is_object($obj)) {
  //$obj->Run('cmd /C wscript.exe test.vbs', 0, true);  // This does'nt work
  $obj->Run('wscript.exe test.vbs', 0, true);   // This works
  var_dump($obj->Run);
} else {
  echo 'can not create wshell object';
}
$obj = null;

?> 

そして、これは私の単純な「test.vbs」スクリプトです。

WScript.Echo "vbscript is running"

(少なくとも私のプラットフォームでは)機能しているように見える別のソリューションは、「システム」コールです。

system('wscript.exe test.vbs');

残念ながら、テストする 64 ビット IIS システムを持っていないので、このプラットフォームに特定の問題があるかどうかはわかりませんが、これが役立つことを願っています.

于 2012-10-07T09:56:00.107 に答える