Windows 7 サービスパック適用後に Apache が起動しない場合の対処法
私の Windows 7 にサービスパック 1 をインストールしたら Apache が自動起動しなくなりました。
同じような現象にあう人もいるかもしれませんので、ここにその解決方法について書いておきます。 再現性を確かめていないので、必ずしも SP1 の不具合ではないのかもしれませんが・・・、印象としては不具合のように思われました。
さて、どんな状況で何が起きたか、そしてどうしたら解決できたか。
発生した問題 - Apache が起動しない
Windows 7 Service Pack 1 をインストールして再起動した直後、普段は自動起動していた Apache が起動しなくなりました。 Apache Service Monitor から Apache の起動を試みても起動せず・・・。
問題が起きた環境
不具合がおきたのは 2007年の秋に購入した HP のラップトップで、それに Windows 7 (32-bit) 英語版をインストールしています。
UAC (User Account Control) の設定は、(非推奨の(笑)) "Never notify" (一番下のレベル)にしていました。
Apache はバージョン 2.2。サービスの設定で自動起動にしています。サービスアカウントは Local System です。
解決方法
コマンドラインからサービスを起動しようとしたところ、エラーコード 5 (Access Denied) が発生しました。 UAC を OFF にしていのにおかしいな、と思い UAC の設定を見ると設定ツマミは一番下になっていました。
この状態で OK を押して再起動したところ、普段通り Apache が起動してきました。 Apache Service Monitor やコマンドラインからも「アクセスが拒否されました」というメッセージもでることなく、サービスを起動、停止することができます。
以上から、どうも Windows SP1 適用直後は UAC が設定に関わらず有効(おそらくデフォルトじゃないかと予想しますが)になっていたようです。 これが再現性のあることかどうかまだラップトップ1台でしか確認していないのでわかりませんが、他にも同様の現象が起きたら UAC の設定を確認されるとよいかもしれません。