环境:本文中用的都是当前最新的环境
apache 2.2.8+php 5.2.5+mysql 5.0.18
关于Apache+PHP+MySQL的安装和配置已经有大量的文章介绍过了,但是我按照PHP的官方文档和很多网上的文章都尝试过结果都没能成功,最后发现,第一,有的文章介绍的是老版本,配置方法已经不适用于我用的最新版本。第二,很多地方配置方法有很多种,有时候不知道要用哪一种,而如果前后的配置方法不一致的话就会造成问题。我尝试了很多办法费了好大劲才把它们配置好,本文将针对前面介绍的环境给出一种切实可行的配置方法。
一、安装apache
我是在apache的官方网站上下载的apache_2.2.8-win32-x86-no_ssl.msi,按照安装向导安装应该不会有什么问题,我是安装成了Windows的服务,端口设在8080。不过我的运气真的很差,在安装的时候确实碰到了问题,Windows服务没有装上去!在Monitor Apache Server里面没有看到任何服务,也就是说Service Status里面是空的。(一般来说是不会有这个问题的,我也不知道为什么会出现那样的问题)最后找到的解决办法是在命令行下运行httpd.exe -k install -n apache,这个命令可以手工地把apache加到Service里面去,httpd.exe在apache的安装目录的bin目录下。
apache安装完后暂时先不需要对conf\httpd.conf文件做任何修改,等会儿配置PHP的时候是需要更改httpd.conf文件的,但现在先让我们保持所有的默认设置。此时站点根目录在apache安装目录下的htdocs下。
二、安装MySQL
我是在MySQL的官方网站上下载的mysql-5.0.18-win32.zip。同样按照安装向导安装应该不会有什么问题。但我的运气真的是很差很差,好像是因为我的机器以前安装并卸载过mysql的原因,在安装完后的配置向导中出现ERROR 1045 (28000): Access denied for user 'root'@'localhost'的错误。最后我是这样解决的,先取消,然后重新运行配置向导(从开始菜单的mysql程序组中),这次它让我修改root的登录密码,我在老密码中让它为空(这应该是我上次安装时root的密码,然后填入新的密码,这样就配置成功了。如果你是第一次安装mysql,应该不会有这种问题的。
同样,我的mysql也是在服务中运行的。安装和配置完成后,你可以用下面的办法测试一下是否你的mysql可用:切换到mysql的安装目录的bin目录下,在命令行中输入mysql -u root -p回车,它提示你输入root的密码,输入你安装时设置的密码,如果没有就直接回车,如果出现mysql>的提示符就表示登录成功了。
三、安装和配置PHP
这是最容易出问题的一个环节,请仔细看好了。
我从PHP官方网站上下载了php-5.2.5-Win32.zip。这是一个可直接解压的非安装包文件。将它解压到c:\php文件夹。
1、让apache支持php
编辑apache的httpd.conf文件,加入下面几行:(最好是加在LoadModule块的下面,便于查找)
LoadModule php5_module c:/php/php5apache2_2.dll
AddType application/x-httpd-php .php3 .php
AddType application/x-httpd-php-source .phps
这样就可以了,不需要做其他任何事,你的apache就已经可以支持php了!这时候不要去碰什么"php.ini",把什么什么dll拷到system32目录等等。一步一步来,搞多了反而把你搞糊涂。
这里唯一要注意的是php5apache2_2.dll。老的php版本都是用的php5apache2.dll,如果你参考以前版本的文档,肯定会弄错,后果就是apache启动失败。不知道是不是我没看仔细,反正我在php官方的documentation上看到的都用的是错的(写的是php5apache2.dll)。后来是在那个文档的下面的“User Contributed Notes”上看到有人提出来的这个错误的。
修改完后要重新启动apache。你可以写个最简单的php文件试试:
在htdocs下建一个test.php,
<HTML>
<HEAD>
<TITLE>PHP Testing</TITLE>
</HEAD>
<BODY>
<?php phpinfo(); ?>
</BODY>
</HTML>
然后访问http://localhost:8080/test.php
2、php连接mysql数据库
1)将c:\php\libmysql.dll拷到windows的system32目录。
2)将c:\php\ext\php_mysql.dll拷到c:\php\下。
3)重命名c:\php\php.ini-recommended为php.ini。
4)编辑c:\php\php.ini
486行:extension_dir = "c:/php"
625行:去掉前面的分号(;)
5)编辑apache的httpd.conf文件,加入一行:
PHPIniDir "C:/php"
这是为了告诉apache php.ini文件的位置,如果不加这行也可以,但是要把你的php.ini文件拷到windows目录,我不喜欢那样做。
通过上面的设置,php就可以连接mysql数据库了。用下面的testmysql.php来测试:
<?php
$db_host='localhost';
$db_database='test';
$db_username='root';
$db_password='mypass';
$connection = mysql_connect($db_host, $db_username, $db_password);
if (!$connection){
die ("Could not connect to the database: <br />". mysql_error());
}
else{
echo "connected successfully!";
}
?>