win7 64位Apache http server+PHP配置
1、首先下载apache http server(我本来是想在官网下载,但是找半天也没找到,于是就在网上下了一个老版本的)我是在这个网址下载的:http://download.csdn.net/download/chang87812/7175961
下载PHP:同样的我开始在官网下载了最新版的(网址:(http://windows.php.net/downloads/releases/)
但是后来配置好后又有问题。
问题是:httpd: Syntax error on line 129 of D:/PHP/server/httpd-2.2-x64/conf/httpd.conf: Cannot load D:/ApaServ/php/php5apache2_4.dll into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3.
原因是:此文件要跟版本对应,否则就不能加载。后来又出现一次,也是这个提示,只是换成了php5.4.8
在174行,“D:\ApaServ\php\php5apache2_4.dll”的激活上下文生成失败。 找不到从属程序集
vcredist_x86.exe。后来解决方法是: 把 vcredist_x86.exe重新安装了一次,这个是我在安装apache之前安装的,可能里面的文件被改写了,所以找不到。我也是看了网上:在类似C:\Program
Files\Microsoft Visual Studio 8\VC\redi
st\Debug_NonRedist\x86\Microsoft.VC80.DebugCRT 下找到了下列文件:
msvcm80d.dll
msvcp80d.dll msvcr80d.dll Microsoft.VC80.DebugCRT.manifest 把这几个文件拷贝到目标机器上,与运行程序同一文件夹或放到system32下,就可以正确运行了。
其他release版、MFC程序什么的都是拷redist下相应文件夹下的文件就可以了,文件夹后都有标识!
这个提示后,才想到的。后来安装php5.5的时候又出现这个错误提示,我开始是按自己的理解,安装了VC++2010运行库,但无论怎么调试都是这个错误,后来我就从网上下载最高版本的VC++2012运行库,一下就成功。(此原因是我在网上查到的,我并没有实践,我不想再装VC++2012运行库了!!!)
于是我就又在网上找到了一个老版本的PHP,下载网址:http://download.csdn.net/download/tonyyxm/5428271
二、安装Apache
1、64位的Apache不同于32位打包成exe文件可直接安装,先把httpd-2.2.19-win64解压到E:/server/ apache- httpd-2.2.19-win64/(/*E为具体服务器文件所在盘盘符*/)
2、以管理员身份运行 命令提示符(开始-程序-附件),进入E:/server/apache-httpd-2.2.19-win64/
3、执行httpd -k install
此处出现问题:failed to open the winNT service manager
解决:原来是软件安装时与windows7的“用户账户控制”(UAC)冲突,只要先关闭UAC(控制面板-用户账户和家庭安全-系统和安全-操作中心,里面有“更改用户账户控制设置”,改成从不通知,完成后会提示重启,此时需要重启一下)再安装就没问题了,安装完后可以再修改回来。
4、修改httpd.conf,这里跟32位系统里配置一样
(1)修改ServerRoot "E:/server/httpd-2.2.19-win64/"
(2) 往下会看到apache开启的功能模块如:#LoadModule vhost_alias_module modules/mod_vhost_alias.so
模块其后添加:
LoadModule php5_module "E:/Server/php-5.3.6-Win32-VC9-x64/php5apache2_2.dll"
PHPiniDir "E:/Server/php-5.3.6-Win32-VC9-x64/"
AddType application/x-httpd-php .html .htm .php
(3)继续往下,找到行DocumentRoot "E:/Code/PHP/"设置网页文件目录 此行修改要与行# This should be changed to whatever you set DocumentRoot to后的<Directory "E:/Code/PHP/">目录设置相对应
5、再次在 命令提示符 执行httpd -k start 没有错误即apache服务启动成功
6、关闭Apache服务器:执行httpd -k shutdown
三、配置PHP
1、如上提到,本人php目录解压到E:/Server/php-5.3.6-Win32-VC9-x64/即对应上步在Apache中设置的LoadModule位置
2、将php.ini-development修改成php.ini
3、打开php.ini,找到extension_dir,修改其值为E:/Server/php-5.3.6-Win32-VC9-x64/ext/即php文件所在目录下/ext
4、找到扩展列表,;extension=php_gd2.dll、;extension=php_mysql.dll、 ;extension=php_mysqli.dll前的“;”去掉即为开启该扩展,当然以上扩展为举例之用,可根据功能虽求不同开启相应扩展
5、(可选)date.timezone的值设为Asia/Shanghai即date.timezone =Asia/Shanghai
6、在E:/Code/PHP/下创建一test.php文件,内容为
<?php
phpinfo();
?>
然后在浏览器地址栏中输入http://localhost/test.php
上面的配置过程是别人的:我配好后出现以下两个问题:
1、httpd: Could not reliably determine the server‘s fully qualified
解决:前言:apache虽然能运行,但是看见error.log中有httpd.exe: Could not
reliably determine the server‘s fully qualified domain name, using 192.168. x. x
for ServerName这个错误,想看看是否有其他占用了80端口
开始--运行--cmd 进入命令提示符 输入netstat -ano
即可看到所有连接的PID
之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选"查看"-"选择列"
经常,我们在启动应用的时候发现系统需要的端口被别的程序占用,如何知道谁占有了我们需要的端口,很多人都比较头疼,下面就介绍一种非常简单的方法,希望对大家有用
假如我们需要确定谁占用了我们的80端口
1、Windows平台
在windows命令行窗口下执行:
C:\>netstat
-aon|findstr "80"
TCP
127.0.0.1:80
0.0.0.0:0
LISTENING
2448
看到了吗,端口被进程号为2448的进程占用,继续执行下面命令:
C:\>tasklist|findstr "2448"
thread.exe
2016
Console
0 16,064 K
很清楚吧,thread占用了你的端口,Kill
it
如果第二步查不到,那就开任务管理器,看哪个进程是2448,然后杀之即可。
如果需要查看其他端口。把 80
改掉即可
补充:原来出现这个错误原因(httpd.exe: Could not reliably determine the server‘s fully
qualified domain name, using 192.168.1.111 for ServerName)是因为DNS没配置好. 如果不想配置DNS,
就在httpd.conf , 在最前加入 ServerName localhost:80 即可
2、“(OS 10013)以一种访问权限不允许的方式做了一个访问套接字的尝试。 : make_sock: could not bind to address 0.0.0.0:80”
解决:改端口,打开.\apache\conf\httpd.conf,将其中的所有80改为81,保存后重新启动apache的,OK。
改完端口就要以下面网址访问:http://localhost:81/test.php
截图: