以前开发PHP一直用AppServ,后来发现还有比AppServ更好的整合开发工具-Xampp:apache+mysql + php+perl整合,
xampp(apache+mysql+php+perl)是一个功能强大的php网站开发集成软件包。应用xampp可以轻松地在各种系统下搭建php等程序的运行环境。
下载网址:http://www.apachefriends.org/zh_tw/xampp.html
网上提供了各种平台的开发包,并且有详细的安装说明。
不过比较惨的是,遵循说明装好后,出现了大问题,apache服务器无法启动。花了我整一天的时间又是google,又是baidu,千方寻药。
最后竟然是xampp容器内部php与perl相互冲突。
查了一天的,也算有些收获,下面我将apache服务器无法启动的原因跟大家分享一下,以免以后诸如此类的问题浪费大家的时间:
1。端口冲突
Xampp中Apache无法启动的解决方法简单的就是修改80和443端口。在启动XAMPP时,如果报80/443端口被占,可以修改此软件的端口
打开xampp/apache/conf/httpd.conf文件把80修改为8081;打开xampp/apache/conf/extra/httpd-ssl.conf文件把443修改为4433或者关闭SSL扩展(反正是调试而已)
2.网路设置问题
现将整理后的解决方案公布如下:
在桌面右键网上邻居–>点击“属性”–>打开“网络连接”窗口–>在“本地连接”右键单击“属性”–>打开“本地连接属性”对话框–>在“常规”选项卡下的“此连接使用下列项目(o):”内双击“Internet协议(TCP/IP)”–>打开 “Internet协议(TCP/IP)属性”对话框–>点击右下脚的“高级(V)…”按钮–>打开“高级TCP/IP设置”对话框 –>单击“WINS”选项卡–>选中“禁用TCP/IP上的NetBIOS(s)”。–>一直点击“确定”按钮即可。
另外:要注意了,咱们上网用的Dr.COM 客户端是跟Apache有些冲突的(具体我也不知道)。如果你在启动了Dr.COM客户端的情况下启动Apache这时还会出现上述错误。一定要关掉 Dr.COM客户端。这时应该就可以正常启动Apache服务器了。
如果每次手动启动apache 时总是提示:本地计算机上的Apache服务启动后又停止了,一些服务自动停止,如果他们没什么可做的例如”日志和警报”服务 。
解决方法如下:
在网络连接属性里选
tcp/ip属性–> 高级–>wins标签—>下面有启用LMHOSTS查询,及netbios的选项
改为禁用,任务管理器里立刻就可以看到apache进程cpu迅速下降(不再尝试开子进程)
经测试暂时还没有问题
观察中
似乎问题和上面的没有关系
可能还和tcpip.sys这个文件有关系
特别是xp sp2系统
除了上面两个外
极端方法是关掉apache的日志
怎么样关闭apache2的日志文件(logfile)?这是个问题,因为写日志会给系统带来很大的损耗。关闭日志以后,甚至最高可以提高整体性能近40%(粗略估计)那么如何关闭日志呢?
可以通过降低log级别的办法来减少日志读写。
这里要提醒的是,这么做将给“入侵检测”以及其他基于日志分析的工作带来麻烦。所以请谨慎使用。
LogLevel用于调整记于错误日志中的信息的详细程度。(参阅ErrorLog指令)。可以选择下列级别,依照重要性降序排列:
Level Description Example
emerg 紧急 – 系统无法使用。 “Child cannot open lock file. Exiting”
alert 必须立即采取措施。 “getpwuid: couldn’t determine user name from uid”
crit 致命情况。 “socket: Failed to get a socket, exiting child”
error 错误情况。 “Premature end of script headers”
warn 警告情况。 “child process 1234 did not exit, sending another SIGHUP”
notice 一般重要情况。 “httpd: caught SIGBUS, attempting to dump core in …”
info 普通信息。 “Server seems busy, (you may need to increase StartServers, or Min/MaxSpareServers)…”
debug 出错级别信息 “Opening config file …”
通常情况建议使用 crit 到 warn 之间的设置
(三)
上面的方法虽然解决了Apache的问题,可是这样会出现偶尔上不了网的现象。经过多天的资料搜索,终于找到了一个较为完美的解决方法了,方法如下:
网上邻居->;查看网络连接->本地连接(你正在使用的那个连接,一般是这个名字)->;右键点它选”属性”->;选中”internet协议(TCP/IP)
->; 属性->;高级->;切换到”wins”标签->点击”导入LMhosts(M)” 然后选择你安装 apache目录下的bin文件夹(我安装的目录是D://AppServ//Apache2.2//bin) 导入httpd.exe后就可以开启Apache 也可以上网了
3.
遇到系统升级到Winxp[sp2]可能会遇到Apache无法正常启动:
error.log日志类似这样描述:
[crit] (OS 10022)提供了一个无效的参数。
解决办法:
1.网上邻居->本地连接->属性->internet协议(TCP/IP)->属性->高级->wins标签->去掉启用LMhosts查询前的勾.
2.控制面版->windows防火墙->高级标签->本地连接设置->服务的标签里勾选安全Web服务器(HTTPS)即可.
(这上下两项完成后仍然有问题,选中:启用 TCI/IP 上的 NetBOIS.
这是网上的办法,我试过后问题依旧,继续找。下面的操作就可以了。
3.在运行里输入:netsh winsock reset
原因:有人提到是winsock的问题,用hijackthis.exe 搜索了下,发现了:
于是找了WinsockxpFix.exe尝试修复winsock,
重启后? apache就可以启动了
后来发现,机子不重启也可以的,只要修复一下网络连接就可以了
其实Windows本身就带有修复工具的 汗一个
只要直接在运行里输入:
netsh winsock reset
连提示重启都不用, 很好很强大!
4.xampp容器内部冲突
打开xampp control panel,点击setup,选中disable mod_perl即可解决冲突问题。google了老半天,这个方法还是在一个英文网站上找到的,正好解决了我的问题。