XAMPP 在windows 下无法启动 Apache 一例

为了在本地测试一些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 to address 0.0.0.0:443
no listening sockets available, shutting down
Unable to 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: Address already 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的问题我不理解,不知道是不是有其他可行的解决方案又不影响这两个程序的使用。

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

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/xampp-windows-apache-start/>。转载请保留此信息及相应链接。

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)