.NETdllからのApache/PHPビューのポップアップ
PHP5.3.9でApache2.3.16を実行しています。使用したいサードパーティの.NETdllもあります。 PHPのDOTNETオブジェクトを使用してdllを正常にロードできますが、オブジェクトのメソッドの1つを呼び出すと問題が発生します。これは私が受け取るエラーメッセージです:
ソース:System.Windows.Forms説明:アプリケーションがUserInteractiveモードで実行されていないときに、モーダルダイアログボックスまたはフォームを表示することは、有効な操作ではありません。 ServiceNotificationまたはDefaultDesktopOnlyスタイルを指定して、サービスアプリケーションからの通知を表示します。
したがって、明らかに、ポップアップボックスを引き起こしているdllで生成されているメッセージまたはエラーがあります。問題は、そのポップアップが表示されないため、どうしたらよいかわからないことです。私はクライアント側にいて、このポップアップはサーバー上で生成されることを理解していますが、それが何であるかを知る必要があります。
これまでに試したことは次のとおりです。
- Apacheサービスで、[サービスにデスクトップとの対話を許可する]をオンにします
- dllの開発者に連絡して、どのエラーがポップアップするかを知っているかどうかを確認します
- 単純なWindowsアプリケーションで同じdllを使用して、エラーが発生するかどうかを確認しました
これらのアプローチのどれも何も生み出していません。他に試すことができるものはありますか?
編集:
チャールズの考えによれば、私はphp.exeからプログラムを実行しました。 -aオプション(インタラクティブに実行)を使用して試してみましたが、どちらの場合もプログラムは完全に実行されました(エラーなし、期待どおりに出力されました)。では、コマンドプロンプトからは正しく実行されても、クライアントブラウザからはエラーが発生する原因は何でしょうか。
答え :
解決策:
方向性を教えてくれたhttp://www.apachelounge.comの人たちに感謝します。
最初に、(Windowsサービスとしてではなく)コンソールからApacheを実行してみました。私がそれをしたとき、プログラムは期待通りに機能しました。これは良いことですが、実行を継続するにはコンソールを開いている必要があるため、コンソールからApacheを常に実行しようとするのは少なくとも不便です。
その時点で、ApacheをWindowsサービスとして実行しようとしましたが、通常のSYSTEMとは別のユーザーとして実行しました。これは機能したので、Apacheをサービスとして実行できるようになりました。また、(少なくとも私には)不明な理由で、別のユーザーがすべての違いを生み出しました。
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。