ヌルめのつぶやきでタグ「tips」が付けられているもの

XAMPPでApachが起動しない場合のわりと汎用的な調査・解決方法まとめ

|
Twitterでつぶやく  
会社の共有PCにXAMPP入れる際に「Apachが起動しないです><」状態になったので改めてまとめてみる。

Apachが起動しない場合、ポートの問題のことが多いので、多くの場合はこれで原因特定~解決までいけるのではないかと思います。・・・たぶん。

ネットで調べても「Skype止めたら起動しますよ」ぐらいしか書いてないことが多いので、調査の方法から書いておけば、環境依存(特定のアプリとの衝突)なんかにも対応できそうなので知っておくと便利かと思います。

普通にXAMPPコントロールパネルから起動しようとしてもダメだった場合に以下の手順で。


  ▼

1)Apachの強制起動を試みる

以下のファイルを実行する。

/xampp/apache_start.bat

>Diese Eingabeforderung nicht waehrend des Running beenden 
/>Bitte erst bei einem gewollten Shutdown schliessen 
/>Please close this command only for Shutdown 
/>Apache 2 is starting ... 
/>(OS 10048)通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、 
/>またはポートのどれか 1 つのみを使用できます。 : make_sock: could not bind to address 0.0.0.0:80 
/>no listening sockets available, shutting down 
/>Unable to open logs 
/> 
/>Apache konnte nicht gestartet werden 
/>Apache could not be started 
/>続行するには何かキーを押してください . . .

起動すれば問題ないが、コマンドプロンプトでこんなのが返ってくる場合がある。

> make_sock: could not bind to address 0.0.0.0:80

ここ!
これはポート80が使用されていてApachが起動できないことを意味している。


  ▼

2)ポート80を使っているプロセスを特定する

コマンドプロンプトを起動して以下を実行。

netstat -oan

ポートとプロセスの状態が見れるので、
[Loval Address]0.0.0.0:80 を使用している [PID] を確認し、覚えとくなり開いたままにするなりする。


※netstatコマンドはポートを利用しているプロセスを調べることができる。


  ▼

3)ポート80を使っているプロセスからアプリケーション名を特定する

タスクマネージャ>プロセス を開く 
さらに、 表示>列の選択 で、「PID(プロセル ID)(P)」をチェックして表示。

プロセス一覧にPIDが表示されるようになるので、ステップ(2)で確認したPIDを使用しているアプリケーションを特定。PIDでソートすると分かりやすい。対象のPIDを探し、そのイメージ名の列を確認すると、それがポート80を使っちゃってるアプリケーション名です。


  ▼

4)ポート80を使用しているアプリケーションを停止する。

ステップ(3)でXAMPP起動の障害になっているアプリケーションが特定できたので、これを停止すればポートの問題で起動できなかったXAMPPは起動するはず。

実際にどんなアプリケーションがひっかかるかと言うと、IIS絡みだったり、Skypeだったりする。それを停止する。
例えば、今回は inetinfo.exe がひっかかったりした。 ←これはIISを停止すると消える。

なお、心当たりのないアプリケーションをいきなり停止したりすると問題があるかもしれないので、その辺はプログラム名でググったりして、それが何であるか特定してから停止するように。この辺は自己責任で。

停止後に再度ステップ(2)~(3)を行い、最新のポート状況をチェックする。
0.0.0.0:80が空いたらXAMPPコントロールパネルからApachを起動。


ちなみに正常起動時にステップ(2)~(3)の手順を行うと、ポート80をXAMPP(Apach.exe)が使用していることが分かる。

Re: MTの「記事一覧」をブログ管理外のページで表示する

|
Twitterでつぶやく  
めずらしく特定の記事へのレスポンス扱いです。

はじめてのjQuery - :: Agnist in hatena ::

こちらのブログ記事なんですが、MTのマルチブログでひとつのサイトを構築する場合の「最新情報」表示についてのアレコレですね。
うん、似たケースにぶつかったことありますわ。

「JS使っておkw」という前提だとしたら、俺ならこうします。

【出力側】

例えば「最新情報」だとか他ブログに表示したい情報を管理してるブログのインデックステンプレートに、こんな感じの内容を追加して、「newswrite.js」とか適当な名前で出力するようにします。もちろん公開設定は「スタティック」。

var htm = "";
<MTEntries><MTEntriesHeader>htm +='<ul>';</MTEntriesHeader>
htm +='<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>';
<MTEntriesFooter>htm +='</ul>';</MTEntriesFooter></MTEntries>
document.write(htm);

【表示側】

で、あとは表示側に、
<script type="text/javascript" src="/news/topicwrite.js"></script>
こんな感じで入れとけばおk。
「MTの最新情報をJavascriptで・・・」って考えるとついXMLをパースしようだとか考えちゃうのだけど(←俺のこと)、document.writeするだけのJSを吐き出しちゃうっていうのが一番楽だったりする。

ちなみに、さらにTIPSとしてscriptタグにはcharset指定もできるので、文字コードの壁も越えられる。これも小さいのだけど、案外忘れがち。
<script type="text/javascript" src="/news/topicwrite.js" charset="utf-8"></script>

なお、Javascriptなので当然検索エンジンとは仲良くありません(;^ω^)
せめてnoscriptタグには一覧ページへの静的リンクも書いといてあげましょう。



※今日一日、このブログへのアクセスができなかったようですね。
 .htaccessファイルがおかしくなってました。失礼しました。

toSource()、俺と結婚してくれ

|
Twitterでつぶやく  
今では心から愛してる、ほんと。

ということで、今まで使ってなかった自分が恥ずかしのですが、Javascriptの連想配列の中身をどうやって確認したもんかとずーっと悩んでいて、Firebug使ってなんとかしたりしていたわけですが、toSouce()を使えば全部解決じゃね?

近頃話題のmixiアプリを作ったりしてても、opensocialAPIでひっぱってきたデータの中身が分からなくて [object Object] と出力されてしまう。こりゃどうしたもんか、ってーことでtoSauceを使う。すると...中身が見える!私にも見えるぞ!

 {key1:"hoge", key2:"piyo"}  ←こんな感じでそのまま出力できる。

検索したら一瞬で解決法見つけられたよ。
そういえば調べてみたことなかったな。

ココで見つけた。
http://javascriptist.net/ref/Object.toSource.html

今まで知らなかったことが悔やまれる。

ブログチャート

Creative Commons License
このブログのライセンスは クリエイティブ・コモンズライセンス.