win7 64位Apache http server+PHP配置

8/31/2015来源:PHP技巧人气:1819

Win7 64位Apache http server+php配置

一、下载PHP

1、首先下载apache http server(我本来是想在官网下载,但是找半天也没找到,于是就在网上下了一个老版本的)我是在这个网址下载的:http://download.csdn.net/download/chang87812/7175961

2、下载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 -kshutdown

三、配置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

截图:

(下面是2014/8/2补充)

今天重新打开apache2.2,突然又出现问题了,问题是:<os 5>拒绝访问 faild to open apache2.2

于是我又上网一顿找,最后大家都说是权限不够。所以我就想要在以管理员身份打开的dos界面下,才能用命令Apache2.2

所以我为了图方便,就将bin的路径加到了环境变量中,这样以后打开Apache方便很多。

(2014.12.10服务器又打不开了)

端口被占用,修改端口!!!