因为悲催的原因被格掉两个盘后,决定干脆重装系统。
出乎预料的是之前的32位系统上用的激活码,居然还能在64位上面用。看来我之前纠结是装有正版激活码的 win8.1专业版32位还是装可怜的只能用 KMS 激活的 64位 是多虑了。
重装后还是配置本地 Apache + PHP + Mysql 环境。之前用过 Zend,用过 Wamp。于是这次决定自己组建,而不是用现成的一键包。
其实早在很久很久前,还在折腾 IIS 的时候,我有这样做过,虽然最后都是无疾而终了。 去官网翻来翻去才找到:
- Apache:
目录| httpd-2.2.25-win32-x86-openssl-0.9.8y.msi - PHP:目录 | php-5.4.36-Win32-VC9-x86.zip
- Mysql:目录 | mysql-5.6.21-winx64.msi
- 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日更新)