制御された XP イントラネット環境で PHP アプリケーションから外部プログラムを開始しようとすると、問題が発生する可能性があります。以下に、一般的な問題とその解決方法をいくつか示します。
問題 1: 表示された画面でプログラムを実行できない
system() や exec() などの PHP 関数は、次のような場合があります。レポート ジェネレーターやメモ帳など、グラフィカル ユーザー インターフェイス (GUI) を必要とするプログラムの起動に失敗します。
解決策:
この問題を解決するには、サービスに移動します。コントロール パネル (services.msc)。 Apache サービスを見つけてそのプロパティを開き、[ログオン アカウント] タブの [サービスにデスクトップとの対話を許可する] チェックボックスがオンになっていることを確認します。 Apache サービスを再起動して、変更を適用します。
問題 2: 同期実行と非同期実行
デフォルトでは、システムはプログラムを同期的に実行し、完了するまで PHP スクリプトをブロックします。 。必要に応じて、pclose(popen()) を使用してプログラムを非同期に実行すると、PHP スクリプトが終了を待たずに続行できるようになります。
例:
<code class="php">// Do not wait for Notepad to close pclose(popen("start /B notepad.exe", "r")); // Wait for Notepad to close before continuing system('start notepad.exe');</code>
注:
これらのソリューションは Windows XP でテストされています。他の Windows バージョンでは動作が異なる場合があります。また、ローカル システムではなくドメイン ユーザー アカウントでサービスを実行したい場合は、同じサービスを使用してデスクトップとの対話とネットワーク共有へのアクセスの両方を行うことができない場合があります。このような場合、サービスを 2 つのコンポーネントに分割することが必要になる場合があります。
以上が制御された環境で PHP を使用して外部プログラムを実行する際の問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。