为了在本地测试一些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]
但是回过头来查看本地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/>。转载请保留此信息及相应链接。