Apache 再起動時に他のプロセスのポートと被ってエラーが出た場合

この記事では、根本原因については、調査すらしていない。
ただ単に Apache を再起動することだけに言及している。

システム構成上や設定などで、何らかの不具合が存在する場合においても、この現象が発生することがあると思う。
その場合は、原因を探ることが肝要。

はじめに

# service httpd restart

としたとき、正常に STOPPED するのに、START に失敗するという事象が発生することがある。

# netstat -lnp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1531/httpd
#

とか言って、正しくプロセスが終了していないことが確認できる。
(通常は2行目の応答なんか出ずに、すぐに次のプロンプトが返ってくる。)

Apache は、動作の過程で複数のプロセス(子プロセス)を作成するのだが、service から httpd を停止しても、これらの正しく終了しない事がある。

原因はおそらく以下のような部分が影響しているような気がしているが、正直、真相は不明、闇の中。

  • Apache を動作させている状態で、Apache に影響する何らかの設定やプログラムなどを変更した事によって、正しくプロセスが停止しなくなった。
    (Apache 停止せずに SSL を更新した、とか)
  • 別の Apache と連携しているプログラムが稼働中のため、停止できなかった。
    (Passenger が稼働中、とか)
  • そもそも Apache のプロセス起動の過程が変、とか。

対処

以下を参考にして対処した。

プロセスを強制終了する

普通に強制終了。

# kill -9 1531
#

この状態で再度確認。

# netstat -lnp | grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1543/httpd
#

まだあがってくるようであれば、全部、強制終了する。
(ひたすら繰り返し)

# kill -9 1543
#

ポートを利用しているプロセスが上がってこなくなったら、すべての Apache プロセスが終了したことになる。

再度 Apache 再起動

# service httpd start

STARTED [O K] なら、正常に起動。
ブラウザから動作確認して、問題無ければ終了。

【余談】

バッチにしたので、今はコマンド1発で Apache 再起動してる。

phpMyAdmin のディレクトリを移動したとき

現象

Web サーバのメンテナンスや整備で、phpMyAdmin のディレクトリを移動し、phpMyAdmin のログインからユーザ名とパスワードを入力し「実行する」をクリックした際、

エラーが出たためセッションを開始できませんでした。 PHP やウェブサーバのログファイルに出ているエラーを確認して、PHP を正しく設定してください

というエラーに出くわすことがある。

原因

phpMyAdmin のディレクトリを移動する前はログインできていたのに、移動した途端に動かなくなった場合、cookie 内に保存しているセッションが不整合を起こしている可能性があり。

config.inc.php の中に

$cfg['Servers'][$i]['auth_type'] = 'cookie';

と設定している場合は、セッションは cookie に格納されている。

対処

  • クライアントの該当する cookie を削除。
  • ブラウザを再起動。phpMyAdmin にアクセスし、再度ログイン。

ただし、これでもエラーが発生する場合や、上記の場所とは違う画面や操作でセッションのエラーが発生している場合、php.ini の設定など別の問題が考えられるので、ググって確認するべし。

VBScript では Const 定義した整数値を、そのまま変数宣言の配列数として直接はセットできない

要するに、

Dim aryHogeHoge(15)

これはできるのに、

Const ARRAY_POINT 15
Dim aryHogeHoge(ARRAY_POINT)

これができない。

Microsoft VBScript コンパイル エラー: 整数型の定数がありません。

って怒られます。

Const ARRAY_POINT 15
Dim aryHogeHoge()
ReDim aryHogeHoge(ARRAY_POINT)

とかにしなくてはいけません。
つまり「面倒くさい」という話。

Word2000 終了時に(閉じると)アプリケーションエラー

“…” の命令が “…” のメモリーを参照しました。メモリーが “read” になることはできませんでした。

というダイアログが表示される。

  • [WD2000] ATOK を既定の入力システムにすると Word2000 終了時にエラーが発生する(Microsoft)(記事削除)

ウチは WindowsXP & ATOK15 & Word2000 という構成で使用しているので、これが原因の可能性あり。

Windows2000 起動時、DWHWIZRD.EXE アプリケーションエラー

  • ウイルス定義ファイルの更新時に「dwhwizrd.exe のアプリケーションエラー・・・」が発生する(Symantec)(記事削除)

どうもこれっぽい。
当該PCも Norton AntiVirus Corporate Edition 7.0 を導入しているのでこの問題が該当する。

んでも、Symantec System Center から設定変更をしなくてはいけないので、System Center がインストされていないクライアントでは何もできないのかなぁ。。。

とりあえずさしあたり問題はなさそうなんで放置プレー。

Excel2000 起動 → タイトル表示の時点でエラーが発生し、Excel が起動できない

今まで普通に起動していたのに、ある日突然起動できなくなった場合は、この可能性が高いです。

ちなみに、この説明をまとめてから、MSのサポート情報を見つけました。_| ̄|○

まずは確認

起動時にオプション付きで起動してみる。

  1. [スタート] – [ファイル名を指定して実行(R)] で、ウインドウを表示
  2. 「”C:\Program Files\Microsoft Office\Office\EXCEL.EXE” /s」
    と入力し、[OK]。
    Excel をコマンド+起動オプションを指定して起動することを意味します。

ちなみに「/s」オプションは、Excel をセーフモードで起動します。

Excel.exe があるフォルダは、自分の使っているマシンによって異なります。適宜、自分のマシンの環境に置き換えてください。

(参考)

で、

これで起動するようならば、XLStart フォルダの中にあるファイルか、Excel.xlb ファイルがおかしくなっている可能性が高いです。

対処

  1. 「C:\Documents and Settings\XXXXXXXX\Application Data\Microsoft\Excel」フォルダ内にある「Excel.xlb」を探す。
  2. 「Excel.xlb」のファイル名を「Excel.xlb.old」に変更。
  3. Excel を普通に起動してください。

「XXXXXXXX」は、自分のログオン名であることが多いです。
「Excel.xlb」があるフォルダは、自分の使っているマシンによって異なります。適宜、自分のマシンの環境に置き換えてください。
また、マルチユーザ環境(複数人で使用するマシン)の場合、Excel.xlb のファイルが複数見つかることがあります。その際は、自分の環境の「Excel.xlb」に対して処置を施してください。
(他人のファイルを加工してしまうと、その人の Excel に影響がでてしまいます。)

どうですか? 普通に起動したなら、問題は解決です。
ツールバーとか、Excel の環境をカスタマイズして使っていた場合は、その設定が初期化されるということがありますが、とりあえず問題は解決したと思います。

で、考えられる原因

マクロとかを自分で作って、それをツールバーとかに追加していた場合、マクロの保存してあったファイルがバグってたり、ファイルを移動させたりすると、こんなことになる可能性があります。
それ以外にも、設定をいじくり倒していたりとか、マクロやアドインを色々追加している内にこの状態になったりするのかも知れません。