1.80端口被占用,apache启动不了.
问题描述:默认安装apache,安装完成后可以自启动apache,但是设置手动启动时会报错,日志显示80端口被占用,修改配置文件改为81端口,可正常手动启动。自启动是因为启动顺序中apache优先,抢先占用了80端口.
排查过程:cmd窗口输入netstat –ano,发现80端口已被监听,PID=4,然后在任务管理器查询到PID是系统进程,所以只有网上搜索‘80端口被NT kernel & System 占用(pid=4)’然后找到了解决方案.
解决方法:CMD窗口net stop http然后选择y最后输入sc config http start= disabled(注意disabled前面有一个空格),然后就可以正常启动默认配置的apache.
2.apache支持php.
问题描述:我的apache版本应该是2.2安装文件是:httpd-2.2.25-win32-x86-openssl-0.9.8y.msi
①、我的php版本是5.5.9.下载文件是:php-5.5.9-Win32-VC11-x86.zip(Thread Safe ),不是这么版本就没有需要的文件php5apache2_4.dll,然后按照一般的教程去配置,会报错:httpd.exe: Syntax error on line 131 of D:/Apache2.2/conf/httpd.conf: Cannot load D:/PHP/php5apache2_4.dll into server: xd5xd2xb2xbbxb5xbdxd6xb8xb6xa8xb5xc4xb3xccxd0xf2xa1xa3
这个核查到的原因是需要安装文件vcredist_x86.exe对应2012版本。
安装后还是无法启动。没有任何错误日志,然后怀疑是php5apache2_4.dll的问题。
解决办法:更换php版本。php-5.4.25-Win32-VC9-x86.zip(Thread Safe )另外安装vcredist_x86.exe对应2008版本(将此版本运行库卸载了也成功了,但是2012未卸载)。然后就成功启动了。
最有意义的参考内容:
1、Apache2.0对应的PHP模块为 php5apache2.dll
2、Apache2.2对应的PHP模块为 php5apache2_2.dll
3、Apache2.4对应的PHP模块为 php5apache2_4.dll
所以,Apache/PHP的搭配有以下几种情况:
1、php5.2支持Apache2.0和Apache2.2;
2、php5.3、php5.4同时支持Apache2.2和Apache2.4;
3、php5.5只支持Apache2.4
php版本与运行库对应情况。
php5.5使用的编译器是vc11,php5.4和php5.3的是vc9,php5.2是vc6。同时还要注意是x86版本,还是x64版本。目前只有php5.5提供x64版本,其他都只有x86版本。
当php和apache的版本对应正确后,将手工安装的vc运行库全部卸载了,照样可以正常启动,目前断定配置环境最重要的是php和apache的版本对应。