- ベストアンサー
apacheをインストールしたけどlocalhostを表示できない
PHP5をやるべく入門書も買ってとりあえずapacheをインストールしました。 2.0で、インストールは成功して起動(常駐?)させて緑を確認しましたが http://localhost http://127.0.0.1/ 共におそらくタイムアウトで表示できませんになりました。 ウイルス対策ソフト、Google Toolberを切っても変わりませんでした。 環境はWindowsXPでルーターでの無線LANです。 また、hostsを確認しましたが書き換えはありませんでした。 プロキシーは使っておらず設定を自動的に検出するになっています。 error.logを見ると (OS 10022)無効な引数が提供されました・・・・・・ とずーーーーっと何十行も続いています。 このままでは手付かずに全てが終わるので回答お願いします。
- みんなの回答 (15)
- 専門家の回答
質問者が選んだベストアンサー
>: make_sock: could not bind to address 0.0.0.0:80 >no listening sockets avaiable, が表示された状態で、またコマンドラインから netstat -ano すると TCP 0.0.0.0:80 0.0.0.0:0 LISTENING プロセスIDの数字 が出ますよね? (この状態でもTCP 0.0.0.0:80が出ないなら、80portを占有しているアプリケーションが勝手に起動したり、いつの間にか停止していると言うことですが、、) プロセスIDからアプリケーションを割り出す方法は #6さんが回答されています。 SP2ならbオプションで一発ですがsp2以外なら#6さんの方法でってことで、、、 で、そのアプリケーションがapacheなら Apache Monitorやスタートメニューでapacheを停止させてから もう一度 test.bat をwクリックしてみる
その他の回答 (14)
- umasikajiro
- ベストアンサー率67% (545/803)
>:80はないようです。この部分が悪いんでしょうか。 ならばApacheも他のアプリケーションも80portを専有していないと言うことです 普通に考えればApacheが起動していないのだと思います。 ・念のため、httpd.confのListen 行を確認してみてください Listen 80 となっていますよね? この80がApacheでlistenするport番号です。 で、無駄かもしれませんが コマンドラインからの起動をしてみてください いちいちコマンドを打つのも面倒でしょうから apache.exeのあるフォルダ(デフォルトではC:\Program Files\Apache Group\Apache2\bin) に、メモ帳で次の内容の test.bat と言うfileを置いてwクリックしてください apache -k start pause この2行だけです。 wクリックすると C:\Program Files\Apache Group\Apache2\bin>apache -k start の後ろに何らかのメッセージが表示されますが 「続行するには、....」が出たらENTERを押すと閉じます その 何らかのメッセージ が ヒントになるはずですが、、、
お礼
Listen 80 となっています。 後者はやってみましたら (OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、 またはポートのどれか1つのみを使用できます。 : make_sock: could not bind to address 0.0.0.0:80 no listening sockets avaiable, shutting down unable to open logs だそうです。 何か他のものが占有しているってことですかね。
- umasikajiro
- ベストアンサー率67% (545/803)
>これはSP2でないとできないとかあるんでしょうか? そうです。(#11で紹介したページにも書いてあります) というか、すみません、XPなら当然SP2かと、決め付けて考えてました なら 取り合えず netstat -an ですね それだとApache.exeは出ませんが TCP 0.0.0.0:80 は出るはずです
お礼
いえ、頑なにSP2を拒んでいるものですいません。 Local Addressの部分ですよね。 :80はないようです。この部分が悪いんでしょうか。
- umasikajiro
- ベストアンサー率67% (545/803)
>そのページも参考してnetstat -nで調べましたら ですから、netstat -n では駄目だと書いたつもりですが? Apache.exeが80portで待ち受けているかどうかは netstat -anb です。 (#5ではその後ろに p tcpもつけてますが、これは#11に書きましたがTCPのみ表示して見やすくするだけ) >Domainは試験サーバーであれば・・・とのことだったので適当に。 LAN内でだけなら、普通はLAN上のコンピューター名かlocalhost ですが空欄のままでも構いません 普通の半角英数字以外の文字は入れていませんよね? >その下のはfor all...port 80です。 では間違いなく80portですね netstat -anb で TCP 0.0.0.0:80 ................ [Apache.exe] が出るはずです。 他、私が検索してみたところ 1・Win32DisableAcceptEx が無ければ追加してApacheをrestart 2・Win32DisableAcceptExが既に有れば逆にコメントアウトしてrestart 3・セキュリティsoftの無効化 の3つしか無いようです。 1、と2、は試されたようですので問題は3、ですが ウイルス対策ソフトは切って試したとありますが これはウイルス対策ソフトのメニューで切ったということですよね? もし、そうだとしたら、以下自己責任でお願いしますが 一旦Apacheをアンインストールして、再起動後 Apacheのフォルダごと削除します。 それからウイルス対策ソフトを一旦アンインストールしてから再起動後 改めてApacheをinstallしてみるとどうでしょうか? セキュリティSOFTの中には、設定メニューで無効にしても 実は一部の機能が有効になっていたり そもそもバグだらけのウイルス対策ソフトも有ります。
お礼
すいません、しかしnetstat -anbを実行してもnetstat ?/と同じ表示が出るだけで これはSP2でないとできないとかあるんでしょうか? 入力は全て半角英数字でしました。 アンインストールは大変そうですがやってみます。 ちょっと時間かかりそうですが。 ありがとうございます。
- umasikajiro
- ベストアンサー率67% (545/803)
>netstat -n >で、TIME_WAITとなっているのが待ち受けているポート番号です。 いいえ違います。それだとコネクションの終了待ち状態です 待ち受けているportを表示するには netstatのオプションに a をつける必要が有ります http://www.atmarkit.co.jp/fwin2k/win2ktips/234netstat/netstat.html 私が#5で書いた netstat の後ろにつけた -anbp tcp は a 全ての n 数値で表示 b アプリケーション名を表示 p tcp はTCPプロトコルのみ表示(UDPは表示しない) と言う意味です。 そのあたりはnetstat /? で説明が表示されます ## で本題ですが、うちでも2.0.55をアンインストール&フォルダごと削除してから 2.0.59を入れてみましたが Win32DisableAcceptEx をつけても付けなくても問題なく表示できましたよ また、他のhttpdが80をlisetnしている場合 Apacheのインストール時に既にlistenされていると インストール中に「only for ...port8080」を選択しない限りインストールエラーになりますし Apacheのインストール終了後にApacheを停止させておいて 他のhttpdで80をlistenさせてから、Apacheを起動しようとしても起動に失敗しますので エラーログには記録されないはずです。 で、質問者さんがインストールした方法を伺いたいのですが インストール中「Server Infomation」の画面で Network Domain: Server Name: Administarators' email: の欄に何を入力しましたか? 2.0系の場合 email欄に a@a などと入れれば DomainもServer nameも空でOKのはずですが? あと、その下の ・for all....port 80 ・only....port8080 のどちらを選びましたか?
お礼
そのページも参考してnetstat -nで調べましたら 192.168.・・・というのが自分のモノですよね? おそらくポートが1863になっています。 これを変えなければならない、ということですか? Domainは試験サーバーであれば・・・とのことだったので適当に。 server,はlocalhostにしました。 emailは普通にメールアドレスを入れました。 その下のはfor all...port 80です。
- okg00
- ベストアンサー率39% (1322/3338)
IISは起動というかインストールしていないですよね? ポート番号が80でないならブラウザで指定するか、httpd.confのlistenでポート番号を指定する必要があります。 http://127.0.0.1:8080/ ↑IPアドレス:指定されたポート番号 netstat -n で、TIME_WAITとなっているのが待ち受けているポート番号です。
お礼
IISはインストールしていません。 netstat -nしてみたらTIME_WAITのところは80でした。やっぱり80だったんですかね。 でも何回かnetstat -nやってると結果が変わるんですがこれは普通ですか? 最初はTIME_WAITの部分があったのに今やったらなくなってしまいました。
- umasikajiro
- ベストアンサー率67% (545/803)
http://wiz.syscon.co.jp/WIZmag030.htm には逆に #Win32DisableAcceptEx ←ここをコメントアウト で解決すると有ります。 ですが、うちのApacheWin32-2.0.55ではhttpd.confにも httpd.default.confにもWin32DisableAcceptExと言う行が見つかりません 質問者さんがお使いのApacheのバージョンはいくつでしょうか? ひょっとして古いバージョンのApacheをお使いなら アンインストールしたあと、フォルダも削除してから http://www.apache.org/dist/httpd/binaries/win32/ にいろいろありますが、2.0系だと最新は apache_2.0.59-win32-x86-no_ssl.msi なので これをインストールしなおしてみるとか?
お礼
ああ、バージョンもきちんと伝えてませんでしたね。すいません。最新の2.0.59です。 こちらも元々Win32DisableAcceptExという行はありませんね。
- Lean
- ベストアンサー率72% (435/603)
No.6&7です。 エラーメッセージの最後に >Try using the Win32DisableAcceptEx directive とあるようですから スタート>すべてのプログラム>Apache HTTP Server 2.0.XX>Configure Apache Server>Edit the Apache httpd.conf Configuration File でApacheの設定ファイルを開くと最初の方下記の箇所があるのでそこに「Win32DisableAcceptEx」を追加 -------8<-------8<-------8<-------8<-------8<-------8<-------8<------- # WinNT MPM # ThreadsPerChild: constant number of worker threads in the server process # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule mpm_winnt.c> ThreadsPerChild 250 MaxRequestsPerChild 0 Win32DisableAcceptEx ← 追加する </IfModule> -------8<-------8<-------8<-------8<-------8<-------8<-------8<------- 追加したら設定ファイルを「上書き保存」して設定ファイルを閉じた後、 スタート>すべてのプログラム>Apache HTTP Server 2.0.XX>Control Apache Server>Restart を実行後、http://localhost/ や http://127.0.0.1/ にアクセスしてみたらどうですかね?
お礼
上書きしてやってみましたがlocalhost、127共にダメでした。
- Lean
- ベストアンサー率72% (435/603)
No.6です >また、コマンドプロンプトから >netstat -o >を実行してLocal Addressの所に「~:80」というように「:80」が付いている行がありますか? 以降は、No.5の書かれた「補足要求3」の方法の方が簡単なのでそちらでお願いします。
お礼
netstat -oを実行してみましたがポート80ではないようです。 回答してくださったみなさん、最初に勘違いして80と言ってしまい本当に申し訳ありませんでした。 本当に本当にお手数かけます。
- Lean
- ベストアンサー率72% (435/603)
>error.logを見ると >(OS 10022)無効な引数が提供されました・・・・・・ 途中で切るのではなくて最後まで全部書いてください。 また、コマンドプロンプトから netstat -o を実行してLocal Addressの所に「~:80」というように「:80」が付いている行がありますか? あった場合、一番右にあるPIDの番号を覚えておいてください。 その後タスクマネージャ(Ctrl + Alt + DELで出てきたウィンドウからタスクマネージャをクリック)のプロセスタブで該当するPIDのプロセスを探してください。 PIDの表示がない場合は、表示→列の選択 を選択後表示された「列の選択」で「PID(プロセスID)(P)」をチェックしOKすると表示されるようになります。 その時、該当するプロセスは何ですか?
- umasikajiro
- ベストアンサー率67% (545/803)
補足要求1:その「(OS 10022)無効な引数が提供されました」の後ろに 英語で何かメッセージが記録されていませんか? 補足要求2: スタート>全てのプログラム>Apache HTTP Server2.0.** >Configure Apache Server>TEST Configuration をクリックしてみてください httpd.confが正常なら一瞬で閉じますが、エラーがあれば それなりのメッセージが出ます。 補足要求3:コマンドプロンプトを開き netstat -anbp tcp と打ってください TCP 0.0.0.0:80 ................ [Apache.exe] と言う行が表示されますか?
お礼
英語のメッセージは下の回答に載せました。 不備があって申し訳ありませんでした。 httpd.confはいじくってないですが一瞬で閉じます。 プロンプトは打ったら Displays protocol statistics and current TCP/IP network connections. と出ましたがそのような行は表示されませんでした。 それと検索した際にあったnetstat -naも試してみたんですが、 たまに接続先IPアドレスが10個くらいある時があります。 それでポート番号80だと思ったのですが今やってみたらこれが2個しか接続先が出ないんです。 このうちの1個のEstablishedが自分のものでしょうか? それだとポート番号が80ではないです。
- 1
- 2
お礼
やっと・・・できました。 ウイルス対策のアンインストール等やったらできました。 本当に無知で要領の悪い質問者だったと思いますが、 ここまでこうして頑張れたのはみなさんのおかげです。 ここまで親身に回答してくださった回答者様方には本当に 感謝してもし尽くせないほどです。 本当に本当にありがとうございました。