3

そのため、次のように Windows 7 サービスのステータスにアクセスするために PHP 関数を呼び出しています。

win32_query_service_status($service_name);

ローカルにインストールされた WAMP インスタンスで実行すると、関数は予想どおり情報の配列を返します。

IIS で実行すると、エラー ステータス 5 が返されます。ドキュメントによると、これは次のエラーに対応します。

WIN32_ERROR_ACCESS_DENIED   0x00000005
The handle to the SCM database does not have the appropriate access rights.

ということで、PHP環境が動いているUSERNAMEphpinfo()を調べてみました。WAMP サイトでは、サービスは私のユーザー ID (Windows ローカル管理者グループに属している) で実行されています。

IIS バージョンでは、ユーザーはF6729-44TP6S7$(私のコンピューターの名前の後に が続く$) です。おそらく、解決策は、Windows のサービス コントロール マネージャー (SCM) で必要な特権をこのユーザーに付与することです。

ただし、問題は、IIS (または Windows) の内部動作について、このユーザー ID がどこから来たのかを知るのに十分な知識がないことです (つまり、必要な特権を付与する方法がわからないということです)。ユーザーがコンピュータ管理コンソールに存在せず、IIS 管理ツールで定義されている場所も見つかりません。

問題は、この PHP 関数を IIS で実行できるようにするには、何をする必要があるかということです。IIS の下で PHP マネージャーに必要な権限を付与するにはどうすればよいですか。あるいは、PHP マネージャーを実行するユーザー ID を変更するにはどうすればよいですか?

4

1 に答える 1