Chinaunix首页 | 论坛 | 博客
  • 博客访问: 295217
  • 博文数量: 44
  • 博客积分: 2276
  • 博客等级: 大尉
  • 技术积分: 439
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-01 09:07
文章分类

全部博文(44)

文章存档

2010年(1)

2009年(1)

2008年(30)

2007年(12)

分类: WINDOWS

2007-11-22 08:42:53

        初学php,需要搭建其开发环境。由于版本更替等原因,网上的方法几乎一人一个样,让人无所适从。昨天花了一晚上时间才在XP下配置好,现将其整理出来,希望能对别人有用。(2007-11-21)
 
一、 下载软件。
1. 下载apache_2.0.55-win32-x86-no_ssl.msi,右键用迅雷点击(直接点击不行)。
2. 下载php-5.2.5-win32.zip,
3. 下载mysql-essential-5.0.45-win32.msi, 
4. 下载phpMyAdmin-QA_2_11-latest.7z,可到其官网上下载最新版本。网址:
5. 下载ZendOptimizer-3.3.0a-Windows-i386.exe,如果链接失效,请到zend的官网下载,网址 ,点击右侧download即可(不过下载须先注册成为官网的用户)。关于如何安装配置测试zendoptimizer在我的另一篇文章中介绍了(网址:http://blog.chinaunix.net/u/32475/showart_428503.html),这里不再赘述。
 
二、安装配置
 
1. 首先安装apache
 
    双击安装即可。假设我安装到了 c:\apache2 目录下。安装完毕后在浏览器中输入 或者 如果不出现错误界面既是安装成功。
    apache默认使用80端口,由于未知原因我的apache和80端口冲突,我手动将其改为了8080端口,方法如下:
    使用ultrleEdit-32打开c:\apache2\conf\httpd.conf文件(此为apache的配置文件),用ctrl+f找到"Listen 80",将其改为“Listen 8080”即可。但以后要浏览器中就得这样打了:
或者:
 了
 
    你的站点文件默认是在c:\apache2\htdocs下的,这就是你网站的根目录,你可以更改。方法如下:
    在c:\apache2 新建目录www,然后在httpd.conf找到“DocumentRoot "c:/apache2/htdocs"改成DocumentRoot "c:/apache2/www",然后找到它下面不远处的“”,将其改为即可。
 
修改目录的默认首页:
在httpd.conf中找到,DirectoryIndex 后面写上你想设置为首页的文件名,如:index.html index.htm index.php等
 
要使这些配置生效需要重新启动apache
 
2. 安装配置php5
 
解压缩PHP压缩包到C:\php5(这个路径可以随意,不过以下要是用到这个路径,请相应的修改)。
  把C:\php5下的php.ini-dist改名为php.ini后再复制到C:\windows 然后修改几个地方:
extension_dir = "C:\php5\ext" (指定动态连接库的目录,php5和php4不同的地方就是它的动态连接库目录变了,这在它的文档结构里有详细的说明)
然后把下面几句前面的分号去掉
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_gd2.dll
;extension=php_imap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mysql.dll
即改为:
extension=php_dba.dll
extension=php_dbase.dll
extension=php_gd2.dll
extension=php_imap.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mysql.dll
刚才修改extension_dir = "C:\php5\ext"就是为了使php能正确的找到这些模块。
 
接下来一点很重要的就是把C:\php5目录下的 libmysql.dll php5ts.dll  php5apache2.dll libmcrypt.dll 和C:\php5\ext目录下的 php_mysql.dll php_mysqli.dll 复制到windows/system32下,如果不这样做,mysql动态连接库就无法正常加载。
不要把 php_mysql.dll 和 php_mssql.dll 混淆
如果没有加载 php_gd2.dll  php将不能处理图像.没有加载php_mysql.dll php将不支持mysql函数库
php_mbstring.dll在后面使用phpmyadmin时支持宽字符


接下来修改了一些文件上传以及内存使用最大限制:(改不改都行)
memory_limit = 20M
post_max_size = 20M
upload_max_filesize = 20M
 

修改过php.ini以后也要重新启动apache
 
3.Apache整合PHP
 
    a.Apache中模块化安装php
 

   在 c:\apache2\conf\httpd.conf中查找 # LoadModule foo_module modules/mod_foo.so
   在此行后加入一行
   LoadModule php5_module C:/php5/php5apache2.dll
   PHPIniDir "C:/php5"
   
    也可以将C:/php5/php5apache2.dll的php5apache2.dll文件拷贝到c:\apache2\modules目录下,这样上面可改为:
   LoadModule php5_module modules/php5apache2.dll
   PHPIniDir "C:/php5"

   (其中C:/php5是你安装php的相应路径.注意不要把php5apache2_2.dll,php5apache2.dll和php5apache.dll混淆.php5apache.dll只适用于apache 版本1的.PHP5压缩包里的php5apache2.dll只适用于apache2.0.*版本,因为我的apache版本是2.0.55,所以我用的是php5apache2.dll,如果是2.2.*以上版本,必须使用php5apache2_2.dll.否则就可能会出现
"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."或者:"The requested operation has failed"的情况.关于这个问题的解决方法可以参考
不过php5apache2_2.dll出来之后也就没有多少参考价值了)
   b .
    查找 AddType application/x-gzip .gz .tgz
    在此行后加入一行
    AddType application/x-httpd-php .php
    这样apache就可以解释php文件了
    也可以再加上如下两行:
    AddType application/x-httpd-php .html
    AddType application/x-httpd-php .htm
    这样apache就可以解释php文件了,就是说包含php代码的html、htm文件也可以被apache解析了。 
    到这里配置基本完成了
    写一个test.php放到c:\apache2\www下测试一下,代码为:
   

phpinfo();

?>


     看到正确的页面即是整合成功。如下:
 
 
4. 安装mysql
            (1) 点击MySQL安装包
 
             (2) 默认是Typical,如果想修改安装路径的话也可以选择custom.
                 注意:安装mysql的路径中,不能含有中文!
 
             (3)点击intall开始安装
             (4)跳过注册
             (5)是否现在就配置 MySQL.也可以之后在开始菜单的configuration wizard 进行配置.
  这里是现在进行配置
             (6) 选择Detailed Configuration(详细设置),点Next继续
             (7)下面这个选项是选择mysql应用于何种类型,第一种是开发服务器,
               将只用尽量少的内存,第二种是普通WEB服务器,将使用中等数量内存,
               最后一种是这台服务器上面只运行MySQL数据库,将占用全部的内存.
               用户可根据自己的需求,选择选项.这里只选择开发服务器,点Next继续
             (8)下面是选择数据库用途,第一种是多功能用途,将把数据库优化成很好的innodb(事务)存储类型和高效率的myisam(非事务)存储类型,第二种是只用于事务处理类型,最好的优化innodb,但同时也支持myisam,只有myisam才支持全文索引最后一种是简单的网络开发,适合于简单的应用,只有不支持事务的myisam类型是被支持的.   一般选择第一种多功能的.
             (9)下面是选择InnodDB的数据存放位置,一般默认好了,不需要改动
                (如果要修改数据保存路径,也可用在安装后修改my.ini的datadir的值)
             (10)下面是选择MySQL允许的最大连接数,第一种是最大20个连接并发数,
                 第二种是最大500个并发连接数,最后 一种是自定义,你可以根据自己的需要选择.
                 这里选择第一个
             (11)下面是是否运行网络链接.这里选择复选框.数据库监听的端口,一般默认是3306,
             如果改成其他端口,以后连接数据库的时候都要记住修改的端口,否则不能连接mysql数据库,
             比较麻烦,这里不做修改,用mysq的默认端口:3306
             (12)这一步设置mysql的默认编码,默认是latin1,也是标准的编码.第二种是UTF8,第三种是手动设置.编码是版本4.1以上引入的.如果要用原来数据库的数据,最好能确定原来数据库用的是什么编码,如果这里设置的编码和原来数据库数据的编码不一致,在使用的时候可能会出现乱码.
这个比较重要,就是对mysql默认数据库语言编码进行设置,第一个是西文编码,第二个是多字节的通用utf8编码,都不是我们通用的编码,这里选择第三个,然后在Character Set那里选择或填入“gbk”,当然也可以用“gb2312”,区别就是gbk的字库容量大,包括了gb2312的所有汉字,并且加上了繁体字、和其它乱七八糟的字——使用mysql的时候,在执行数据操作命令之前运行一次“SET NAMES GBK;”(运行一次就行了,GBK可以替换为其它值,视这里的设置而定),就可以正常的使用汉字(或其它文字)了,否则不能正常显示汉字。按 “Next”继续。            
 
             (13)这一步是是否要把mysql设置成windows的服务,一般选择设成服务,
              这样以后就可以通过服务中启动和关闭mysql数据库了.推荐:下面的复选框也勾选上,
              这样,在cmd模式下,不必非到mysql的bin目录下执行命令.在命令行下咨询可以执行文件
             (14)这一步是设置mysql的超级用户密码,这个超级用户非常重要,
                 对mysql拥有全部的权限,请设置好并牢记超级用户的密码,
                 下面有个复选框是表示创建一个匿名账号,这会使数据库系统不安全.
                 如果有这个需求,也请勾选.
             (15) 点击 Execute进行安装
             (16) 点击finish完成安装
             (17) 我们可以开始使用mysql了,首先启动mysql服务,然后在命令行下打:
                  
C:>php -u root -p
                  输入密码出现这个界面说明mysql已经安装好了

可能出现的问题:
如果在第15步,出现下图提示

是因为你之前装过mysql.卸载时还保留了一些配置文件.

点击retry看看是否可以通过。否则点击 cancel 退出.然后点击开始菜单的 MySQL Server Instance Config Wizard
重新配置 mysql

重复之前的操作.第14步将会出现界面是像下面这样
 
有三个输入密码的地方,你原来装过mysql.
你在第一个文本框输入原来root的密码,后面两个文本框输入root的新密码就可以了

如果还是不行那就重装一次MySQL。
重装注意事项:最好删除原来的所有文件,必要的话,可以清一下注册表,
如果你机器上没有其它mysql相关的程序.而且一定记得不要保留原有的my.ini文件.
还有就是删除原来安装路径下的文件,并删除数据目录下面的ibdata1文件.

   5. 配置php并关联MySQL         
 
a. 打开php.ini设置扩展路径
查找 extension_dir 有这么一行
extension_dir = "./"
将此行改成
extension_dir = "C:\php5\ext"
其中C:\php5是你安装php的路径.路径不正确将无法加载dll
(注意:有些php版本是 ;extension_dir = "./" 要把前面的分号去掉)

b. 分别查找
;extension=php_mbstring.dll
;extension=php_gd2.dll
;extension=php_mysql.dll
把上面3项前面的分号去掉,这样apache启动时就可以加载这些dll了
注意不要把 ;extension=php_mysql.dl  和 ;extension=php_mssql.dl 混淆
当然前面我们也把这些dll复制到system32下了.(大家在安装的过程中都注意到如何把一些dll加载入来了.
以后要加载一些dll,比如说php_mysqli.dll,也就懂得怎么加载了)

c. 设置会话保存路径
查找session.save_path 有这么一行
;session.save_path = "N;/path"
在此行后加入一行(注意是加入一行,不是加到后面)
session.save_path = "C:\WINDOWS\Temp"
保存到你的临时目录下,这里完全可以保存到windows临时目录Temp下
也可以新建c:\php5\session,然后将其改为:
session.save_path = "C:\php5\session"

d. 还有比较值得注意的是 short_open_tag .有一些php版本默认是Off的.
也就是说 php不能使用短标记如 必须使用
由于短标记使用方便,并且很多程序也是用短短标记来写,如discuz等
如果不把 short_open_tag 改成On将出现的症状将很难判断是上面原因,这里建议修改
查找
short_open_tag = Off
改为
short_open_tag = On 

e. 是否显示错误 display_errors
出于安全性考虑,display_errors 有些版本也默认为 Off.
就是说在调试时,如果php代码有误,就只出现一个空白页.而不会显示出错原因和出错行数.
这样调试起来将非常不便,建议根据自己需要修改
查找
display_errors = Off(注意不是 ; - display_errors =Off[Security])
改成
display_errors = On

f. register_globals
出于安全性考虑它默认也是Off
当register_globals=Off的时候,下一个程序接收的时候应该用$_POST['user_name']和$_POST['user_pass'])
当register_globals=On的时候,下一个程序可以直接使用$user_name和$user_pass来接受值.
更详细的说明请参考

建议根据自己需要修改 .这里不建议修改,毕竟存在安全隐患.

g. php5时差问题
时间相差八小时
为什么呢?PHP5系列版本新增了时区设置,默认为格林威治时间,与中国所在的东8区正好相差8个小时
查找date.timezone有这么一行
;date.timezone =
将;去掉,改成
date.timezone = PRC
其中PRC:People's Republic of China 中华人民共和国,
更详细解决方法请参考


关于文件上传要注意的配置请参考
 
对c:\WINDOWS下的php.ini修改好后,将其拷贝至php的安装目录既c:\php5中,将原来的php.ini覆盖掉才行,我也不知道为什么这么做,但若不这么做的话,运行下面的test_mysql.php时总是报一个如下的错:
Fatal error: Call to undefined function: mysql_connect()
有方家知道为什么这样做的话请发邮件告诉我 谢谢 please mail to :
至此配置完毕,写一个文件test_mysql.php测试一下
首先应应建立一个数据库,开启mysql服务,打开命令行输入:
   c:>mysql -u root -p
回车后出现:
password:
打入你的密码后回车,如下图所示:
 
 
 
 
然后打入
mysql>use test;
后回车,代表使用test数据库;
然后在mysql>后打入下面的建表语句后回车。建立一个employees表。
 
CREATE TABLE employees ( employee_id mediumint  NOT NULL AUTO_INCREMENT,
first varchar(20),
last varchar(20),
address varchar(20),
position varchar(20),primary key (employee_id));
 
然后插入一条记录:
mysql>insert into employees values(0,'耿','乐群','哈尔滨','学生');
回车后再插入一条数据:
mysql>insert into employees (first,last,address,position) values('tom','hax','USA','MOVIE STAR');
后回车,查看一下数据:
mysql>select * from employees;
test_mysql.php代码如下:







mysql connection test


//这里替换为你自己的用户名与密码
$db = mysql_connect("127.0.0.1", "root","glq2214545");


mysql_select_db("test",$db);

//目的是正确显示中文,这就是前面安装mysql时编码方式选gbk的原因
mysql_query("set names gbk");

$result = mysql_query("SELECT * FROM employees",$db);

printf("First Name: %s
\n", mysql_result($result,0,"first"));

echo '
';

printf("Last Name: %s
\n", mysql_result($result,0,"last"));
echo '
';

printf("Address: %s yy
\n", mysql_result($result,0,"address"));
echo '
';

printf("Position: %s
\n", mysql_result($result,0,"position"));
echo '
';
echo '
';

echo 'It is scuessful to connect to mysql database. Congratulations!';
?>


 
访问  若显示为:
 
First Name: 耿
Last Name: 乐群
Address: 哈尔滨
Position: 学生

It is scuessful to connect to mysql database. Congratulations!
 
 
则恭喜你!php已经能连上mysql,并且中文也能正确显示了!
 
6. 安装配置 phpMyAdmin
 
 
下载得到 phpMyAdmin(我下的是phpMyAdmin-2.11.2.2-all-languages.zip),将其解压到 你网站根目录下并重命名为phpMyAdmin,(假设我的站点根目录在e:\apache2\www目录下,则将解压出的phpMyAdmin放到e:\apache2\www 中即可)
找到并打开 libraries/config.default.php (有些版本是当前目录的 config.inc.php或者 config.defaut.php),打开后发现其前面的注释说不要修改此文件,修改config.inc.php会有同样的效果,截图如下:

 
 
 
 
 
由划红线处可知,建议不要修改此文件,要修改的就修改config.inc.php。config.inc.php在e:\apache2\www\phpMyAdmin下。打开config.inc.php
做以下修改:

1 查找 i++,在其下加上如下两行
$cfg['Servers'][$i]['user']          = 'root';     
$cfg['Servers'][$i]['password']      = ''; //use your password here

把你的mysql密码填到$cfg['Servers'][$i]['password']      = ''; 的单引号里边

2 搜索 $cfg['PmaAbsoluteUri'],将其后面单引号里的值设置为 phpMyAdmin 目录路径,如: ; (如果你更改了apache的端口为8080,则此处应写:)

3 搜索 $cfg['DefaultLang'],将其后面单引号里的值设置为 zh-gb2312 ;
  若搜不到的话,就自己手动加上这一行。

下面这项根据自己需要的编码修改(如果对数据库编码不是很熟悉的建议不要修改)
4 搜索 $cfg['DefaultCharset'],将其设置为 自己所要的编码.

打开浏览器,输入:,Apache 和 MySQL 均已启动,
如果出现如下页面则phpmyadmin安装完成并可以使用了
 
恭喜你! 至此本文结束!希望对你有所帮助!
阅读(3403) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~