萧歌的《天下第一妃》:XAMPP在windows下无法启动Apache一例

来源:百度文库 编辑:九乡新闻网 时间:2024/10/06 01:26:54


By lonelicloudon 十二月 27, 2009 周日. 0Comments.

Last modified: 二月 23, 2011 周三

为了在本地测试一些PHP程序,今天安装了XAMPP。XAMPP(apache+mysql+php+perl)是一个功能强大的建站集成软件包。但是安装之后却无法正常启动Apache,而别的如mysql却可以正常运行。后来发现是因为443端口被Vidalia(Tor组件)占用。退出Vidalia之后Apache就能够正常启动了。

症状

反复点击Start却始终显示:

Busy…

Apache started

Busy…

Apache started

然而就是不见那个绿底黑字的“running”字样。

排查问题

先上网搜索,大部分都是因为80端口被迅雷等程序占用而提示:

busy…
apache started [port 80]

via 解决Xampp中Apache无法启动的终极方法

但是回过头来查看本地Apache的事件日志,(X):\xampp\apache\logs下的error.log文件中显示:

(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。  : make_sock: could not bind toaddress 0.0.0.0:443
no listening sockets available, shutting down
Unableto open logs

说明是与0.0.0.0:443端口绑定时出现问题。

问题解决

用到443端口的程序本来就不多,我这里最可疑的就是Tor了。退出Tor后,Apache就可以正常启动了。

这时再启动Vidalia就报错了:

十二月 27 15:34:04.703 [Warning] Could not bind to 0.0.0.0:443: Addressalready in use [WSAEADDRINUSE ]. Is Tor already running?

当然还可以通过cmd命令行直接查看有无程序占用0.0.0.0:443:

1、运行cmd,然后输入netstat-ano,回车;
2、查看开头几行包含0.0.0.0:443的那一行最后的pid,为几个数字,把这几个数字记下来;
3、启动“任务管理器”——“进程”,在“工具栏”——“选择列”前面的框里打上勾;
4、然后找到与刚才那个pid对应的是哪个程序,很容易就会找到,就是它与0.0.0.0:443进行了绑定(bind);

延伸

显然这样的解决办法不够好,如果我非要同时运行Vidalia和XAMPP怎么办?

对于绑定0.0.0.0:443的问题我不理解,不知道是不是有其他可行的解决方案又不影响这两个程序的使用。

Wu在其msn Spaces中提到:

修改 **\xampp\apache\conf\extra\httpd-ssl.conf ,里面有listen 433 ,将433改成别的。

(对个别文字有修改,引者注)

via http://unaftp.spaces.live.com/blog/cns!759FB653AEBAE1F1!357.entry

但是这样会不会影响Apache的https的使用还不知道,有待进一步验证。

另外,还有其它人提到QQ等程序也会占用443端口,具体问题我没有碰到。但是这说明类似的问题还是会有的,都可以参考这样的解决方法。