本来想学学php,于是就想搭建web服务器和sql环境,结果浪费掉了不少时间。
大致的总结下,也算是长个记性。
使用的安装包分别是httpd-2.2.22-win32-x86-no_ssl .msi,php-5.2.5-Win32.zip和mysql-installer-community-5.5.28.3.msi,很显然用的还算是比较新的安装包。安装apache还是比较顺利的,一路安装下来,默认监听本机所有ip的80端口,当然包括回环地址, 接着解压php到指定文件夹,接着安装mysql,打开安装目录下的httpd.conf文件,做如下调整:
ServerRoot "D:/Apache2.2" 服务器安装根目录
DocumentRoot "D:/phpWeb" 修改为自己的网站根目录
# This should be changed to whatever you set DocumentRoot to.
<Directory "D:/phpWeb"> 与上一步进行同步修改
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
<IfModule dir_module> 设置默认的被请求文件
DirectoryIndex index.php index.html
</IfModule>
LoadModule php5_module "D:/php/php5apache2_2.dll" 以模块的方式加载php,注意此处的php5apache2_2.dll对应的apache 版本
LoadFile "D:/php/php5ts.dll" 手动加载php动态链接库 或者 把这两个文件放到system32文件目录下
LoadFile "D:/php/libmysql.dll" 加载mysql动态链接库
PHPIniDir "D:/php" 非必要的配置
AddType application/x-httpd-php .php .html .htm 服务器端支持动态文件类型
保存修改后,测试apache,重启apache服务器,在浏览器中输入localhost or 回环地址,页面显示 "It works !"到此说明,apache工作了。
测试php,在phpWeb目录里编辑一个index.php 的文件,内容为<?php phpinfo(); ?>,重复测试apache服务器的操作,页面显示php的配置信息,查看是否包括sql模块,很想然没有,因为php默认是不加载mysql模块的。然后修改php.ini 文件,主要改动点如下:
extension_dir = "D:/php/ext" 扩展dll库的位置
……
extension=php_mysql.dll 打开mysql的扩展
对于php.ini的修改相当郁闷,网上找了很多也做了各种修改,似懂非懂的就去尝试,后来都不管用。 想想mysql是否安装成功呢,开始用命令行查看,先看端口3306端口是否处于监听状态,使用netstat -a命令,再使用mysql workbench 测试与数据库的连接是否成功,结果成功说明mysql安装没有问题,mysql 的配置文件是my.ini ,暂时不用动,默认的配置可以工作。 于是问题出在php与mysql的衔接处,问题肯定出在php.ini文件。
[Ok3w_NextPage]开查php.ini,还是先看看phpinfo()给出的信息吧,看来看去怎么没有mysql模块,开始怀疑我之前是否打开了配置信息里的mysql 扩展。God,打开的竟然是extension=php_mssql.dll.此处省略无数字。
Wahtever, 问题总算找到,测试一下,瞬间OK,欲哭无泪。但是回顾整个过程,时间主要浪费在了细小的错误上。 总结教训: 面对问题不能不问百度google闭门造车但也不能盲信盲从 ; 面对问题更多的是持续关注问题,自己分析问题。
下一步详细分析httpd.conf php.ini my.ini ,灵活配置,并对web服务器和数据库服务器进行性能调优,然后移植网站到新崛起的Nginx web服务器等。貌似有点偏题了,当然主要目的还是学习可爱的PHP.