配置Apache

发布于

因为悲催的原因被格掉两个盘后,决定干脆重装系统。

出乎预料的是之前的32位系统上用的激活码,居然还能在64位上面用。看来我之前纠结是装有正版激活码的 win8.1专业版32位还是装可怜的只能用 KMS 激活的 64位 是多虑了。

重装后还是配置本地 Apache + PHP + Mysql 环境。之前用过 Zend,用过 Wamp。于是这次决定自己组建,而不是用现成的一键包。

其实早在很久很久前,还在折腾 IIS 的时候,我有这样做过,虽然最后都是无疾而终了。 去官网翻来翻去才找到:

  1. Apache:目录 | httpd-2.2.25-win32-x86-openssl-0.9.8y.msi
  2. PHP:目录 | php-5.4.36-Win32-VC9-x86.zip
  3. Mysql:目录 | mysql-5.6.21-winx64.msi
  4. phpMyAdmin:目录 | phpMyAdmin-4.3.2-all-languages.7z

注意:apache 2.2 对应的是 php5.4,若选择 php5.5 则需要apache 2.4 而 apache 2.4 没用windows的二进制包,只提供源码包,需要自己编译。或者选择第三方的编译好了的。 所以为了避免麻烦,这里只好选择 apache 2.2 了。

更新:apache 不再提供windows平台支持。上面链接是网盘存的以前的版本。

另外还有 Windows 下的运行库,因为是刚装好的系统,启动 apache 提示缺少 msvcr110.dll ,装上 Visual C++ 2012就好了,从这里下载对应版本的 VC2012 。或者到数字软件管家之类的里边找到适合的vc++组件。

一路Next下来,然后修改 httpd.conf 和 php.ini 让他们结合起来工作。

1、编辑 httpd.conf

编辑 D:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf

1、加载 php 模块

#LoadModule vhost_alias_module modules/mod_vhost_alias.so

下添加三行,引号的目录改成自己对应的目录。(132行)

LoadModule php5_module "D:/Program Files (x86)/php-5.4.24-Win32-VC9-x86/php5apache2_2.dll"
PHPIniDir "D:/Program Files (x86)/php-5.4.24-Win32-VC9-x86"
AddType application/x-httpd-php .php .html .htm

第一行是 php5apache2_2.dll 所在的目录,第二行是 php.ini 的目录,第三行添加解析 php文件类型的支持。

2、把站点根目录改成自己需要的(184行)

DocumentRoot "E:/Hosts"

还有(211行)

# This should be changed to whatever you set DocumentRoot to.
#
<Directory "E:/Hosts">

3、添加目录索引文件对 php 的支持

把(246行)

DirectoryIndex index.html

改成

DirectoryIndex index.html index.php

4、修改虚拟主机配置文件

可以改成自己的设置,方便备份恢复,当然也可以不管。

把(476行)

#Include conf/extra/httpd-vhosts.conf

改成

Include "E:/Hosts/vhosts/2014.conf"

2、修改 php.ini

D:\Program Files (x86)\php\php.ini-development 重命名成 php.ini 编辑:

1、设置php扩展模块的目录(721行)

; On windows:
; extension_dir = "ext"

改成

; On windows:
extension_dir = "D:/Program Files (x86)/php-5.4.24-Win32-VC9-x86/ext"

2、启用一些必要的模块,去掉前面分号注释符

extension=php_curl.dll(860行)
extension=php_gd2.dll(862行)
extension=php_mbstring.dll(869行)
extension=php_mysql.dll(871行)
extension=php_mysqli.dll(872行)
extension=php_pdo_mysql.dll(877行)
extension=php_pdo_odbc.dll(879行)
extension=php_xmlrpc.dll(895行)

3、设置时区(909行)

;date.timezone =

改成

date.timezone = Asia/Shanghai

出错

1、完全修改好后,启动 Apache,出现错误,命令行显示的是:

httpd.exe: Syntax error on line 132 of D:/Program Files (x86)/Apache Software Fo
undation/Apache2.2/conf/httpd.conf: Cannot load D:/Program Files (x86)/php/php5a
pache2_4.dll into server: \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3
Note the errors or messages above, and press the  key to exit.  26...

前面是无法加载 php5apache2_4.dll 模块,后面估计是中文,把 \x 替换成 % 粘贴到百度搜索地址栏就可以看到说的是 找不到指定的模块。

这时看到是apache是2.2版本,而我之前下载的是 php-5.5.8-Win32-VC11-x64.zip 里边只有 php5apache2_4,于是重新下载了上面的 php-5.4.24-Win32-VC9-x86.zip 里边就有 php5apache2_2 和 php5apache2_4。搜索到有说可以 直接把 php5apache2.dll 重命名成为 php5apache2_2.dll 的,实测不行。

2、第二次安装提示:

httpd.exe: Syntax error on line 131 of C:/Program Files (x86)/Apache Software Fo
undation/Apache2.2/conf/httpd.conf: LoadModule takes two arguments, a module nam
e and the name of a shared object file to load it from
Note the errors or messages above, and press the  key to exit.  23...

这里因为是复制过来的,路径旁的引号变成了中文字符的引号 “” ,所以系统识别不出来,然后路径里边有空格,所以认为加载模块时出现两个参数,所以把中文字符下的引号改成英文字符下的引号 "" 即可。

3、后来虽能够启动 apache,却不能打开对应的虚拟主机,打开 D:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs 错误日志:

[warn] _default_ VirtualHost overlap on port 80, the first has precedence

翻译过来说:80 端口的虚拟主机重叠,第一位优先

在 httpd.conf 里边

Listen 80

下面加上一行

NameVirtualHost *:80

即可。我下载的里边没有这一行,翻了一下以前zend里边的果然有这一行。

4、注册apache到服务

我反复装了几次,apache 居然没有注册到 windows系统服务,虽然在命令行打开时可以正常使用 apache,但命令行窗口一旦关闭,就等于关掉了apache服务器。

于是找到把apache注册到服务。cmd 切换到 D: 盘 对应目录

httpd.exe -k install

5、注册mysql到服务

这次这个版本的 mysql 也没装好,需要手动注册mysql到服务。还是切换到对应目录

mysqld --install  Mysql5.6

6、修改 mysql 的 root 密码

root 密码默认为空,登陆不了 phpmyadmin ,还是切换到对应目录

C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin -u root -p password

先输入原密码,默认为空,然后输入两遍新密码即可。

看来自己 配置确实不省心不省事。

参考 :搭建PHP环境 | 设置root密码 | 添加mysql服务

(2014年4月6日更新)