本篇不是Windows Server 2008(R2)配置apache+php+mysql环境的教程,而是一些问题事项,正是这些
细节让很多人的apache+php+mysql环境跑不起来。
服务器环境:
Windows 2008 R2 64位。apache,mysql,php都是32位。
1. 80端口的外网访问问题
表现:80端口本地可以访问,外网不能访问,换了8080端口也是一样,检查过也没其它程序占用这
两个端口。
原因分析:防火墙中没有配置80端口或者apache没有启用外网访问。
解决办法: 防火墙的入站规则和出站规则都加上80端口。修改httpd.conf,找到 Deny from all,全部
改成 Allow from all 。
2. 不能执行PHP
原因分析1: apache没有加载php5模块
解决办法: 修改httpd.conf,找到#LoadModule vhost_alias_module modules/mod_vhost_alias.so,
在其下方加入:
12 | LoadModule "D:/php/php5apache2_2.dll" PHPIniDir "D:/php" |
注意修改成下php路径。
原因分析2: apache不能识别php文件
解决办法: 修改httpd.conf,添加
1 | AddType |
3. apache不能正常启动
表现:命令行下启动apache时会报错: can not load D:/php/php5apache2_2.dll into server。
原因分析:1.该dll不存在;2.缺少Visual C++ 2008 Runtime。
解决办法:
针对原因1:确认php目录下存在该dll文件。如果没有,到php官方网站下载完整包,本人用的是
5.3.27非线程安全的zip包,而不是msi。
针对原因2:安装visual c++ runtime library 2008。注意必须是2008版本,为保险起见我在
64位的服务器上同时装了64位和32位版。
4. index.php默认不执行
解决办法:修改httpd.conf,找到DirectoryIndex, 在 index.html前面加上 index.php
5. 连接不上mysql数据库
连不上数据库原因有很多,可能数据库配置问题,用户名密码不对,防火墙端口限制等等。
但是如果你确认数据库运行正常,用户名密码数据库名称正确,数据库端口不在防火墙规内(如果是本地数据库不
用管这一点),这些都正常但还是连不上数据库,那么原因很可能是就是PHP中没有正确配置mysql。
解决办法: 修改 php.ini和httpd.conf。
1.修改httpd.conf,找到 LoadModule php5_module,在其下加一行:
1 | PHPIniDir "D:/php" |
注意修改下php路径。
2.修改 php.ini。 首先你的php目录下如果没有php.ini,只有php.ini.development和php.ini.production,
那拷贝一份php.ini.production,并命名为 php.ini
打开php.ini,确保 extension_dir配置正确,正确的配置如下:
1 | extension_dir "C:/php/ext" |
php目录改成自己的。注意要使用绝对路径,即全路径,使用相对路径是不行的。
接下来把下面两行前面的分号去掉
12 | ;extension=php_mysql.dll ;extension=php_mysqli.dll |
修改之后应该是这样的
12 | extension=php_mysql.dll extension=php_mysqli.dll |
保存,重启apache。