非常に遅い回答でしたが、私はこれを自分で開発していましたが、Windows XP上のApacheサーバーでPHPからGUIプログラムを実行することが実際に可能であることがわかりました。
- スタート - >ファイル名を指定して実行、タイプ「services.mscと」サービスコントロールを起動するには鉱山はWampServerを使用して「wampapache」と呼ばれていました(
- は、Apacheのサービスを見つけて(そこに到達する他の方法を、これはIMO最も簡単です) 2.0)
- オープンサービスのプロパティ(ダブルクリックするか、右クリック - >プロパティ)
- アカウントのログオンにフリップと「デスクトップとの対話をサービスに許可」というタイトルのチェックボックスを確保は
- フリップをチェックされています[全般]タブに戻り、サービスを停止します。アートサービス
ここで、以下のコードを使用して、PHPからUIプロセスを起動できます。最初のコードスニペットでは、スクリプトはアプリケーションが終了するのを待機しません。 2番目のスニペットはプログラムが終了するのを待ってから、続行(ブロック)します。
アプリケーションを待ってはいけない:アプリケーションの
pclose(popen("start /B notepad.exe", "r"));
待ち:
system('start notepad.exe');
これは、Windows XP上でテストされています。他のWindows版で試したことはありません。
サイドノート 私の特定の設置で、私は、サービスのタブ内のログ内の他のオプションを使用していた - それはドメインユーザー権限で、いくつかのネットワーク共有にアクセスできるように、Apacheはドメインユーザーとして実行されていました。そのオプションがサービスをローカルシステムとして実行している場合にのみ、このチェックボックスは使用できません。大規模な調査の結果、私は、単一のサービスが現在のデスクトップとやり取りし、特定のユーザーの資格情報を利用する方法がないことを発見しました。それは、あなたのサービスを2つのコンポーネント、つまりユーザーアカウントのprivを使用するサービスとデスクトップとやりとりするサービスの2つに分割することを提案する、1つまたは複数の提案です。あなたが話しているサービスがWebサーバーの場合はあまり実用的ではありません。このメモはおそらく私のユースケースに特有のものですが、将来別の人に別の人を救うことができるようにするために、ここに入れたいと思っていました。
私はあなたが何を意味するかを見ます。あなたは右のメモ帳はGUIなしで実行されています。 (私の設定は60秒後にタイムアウトしました。)PHPからGUIベースのプログラムを起動することはできず、OSベースのソリューションに頼らざるを得ません。それは知って良いです。ありがとう! – sdfor