PHP与MySQL权威指南
上QQ阅读APP看书,第一时间看更新

第2章 PHP与MySQL开发环境的搭建

2.1 在Windows上安装IIS

IIS(Internet Information Service,互联网信息服务)是由微软公司提供的基础互联网服务,它是一种Web服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成为一件很容易的事情。

下面以在Windows Server 2003中安装IIS 6.0为例,为大家讲解IIS组件的安装。

首先打开控制面板,然后选择“添加或删除程序”,并在左侧选择“添加/删除Windows组件”,接下来会显示Windows组件向导界面,在“Windows组件向导”中选中“应用程序服务器”,如图2-1所示。

图2-1 添加应用程序服务器

单击“详细信息”按钮,选中“Internet信息服务(IIS)”,如图2-2所示。

图2-2 选择安装IIS 6.0

单击“确定”按钮,会出现如图2-3所示的界面。

图2-3 开始安装IIS 6.0

单击“下一步”按钮后开始安装,安装完成后根据图2-4的提示打开“Internet信息服务(IIS)管理器”。

图2-4 打开Internet信息服务(IIS)管理器

打开“Internet信息服务(IIS)管理器”,检验安装是否完成。

至此,IIS组件已安装完成,界面如图2-5所示。

图2-5 IIS 6.0安装成功

2.2 PHP的安装和配置

本节将分别介绍PHP在Windows和Linux下的安装配置过程。PHP的官方下载地址为http://cn.php.net/downloads.php。

2.2.1 在Windows下的安装和配置

目前有很多基于Windows的多合一安装包,但是我们建议用户自己手动安装PHP,这样可以更加详细地了解PHP的使用和配置,并且能够根据需要非常方便地安装PHP扩展。下面以PHP 5.2.14版本为例介绍PHP的安装和配置过程。

(1)下载PHP安装包php-5.2.14-Win32.zip,然后将其解压缩到一个选定的目标位置,如“C:\php\”,解压后的文件目录如图2-6所示。

图2-6 PHP安装图解:PHP安装包解压后的文件目录

(2)为PHP设置一个有效的配置文件php.ini。在解压后的目录中有两个ini文件php.ini-dist和php.ini-recommended,可将其中任何一个复制到Windows(有的系统是Winnt)目录下,并改名为php.ini(建议使用php.ini-recommended,该文件在性能和安全方面做了优化)。

(3)打开php.ini文件并找到“extension_dir="./"”这一行,将其值修改为在PHP目录下“ext”文件夹的路径,如“extension_dir="C:/php/ext"”。然后找到“;extension=php_gd2.dll”和“;extension=php_mysql.dll”并将前面的分号“;”去掉,这样PHP既可以支持GD绘图函数库,也可以支持MySQL数据库。php.ini中还有很多其他的扩展,可以根据自己的环境配置所需来开启或关闭相应的扩展,这里不再一一介绍。

(4)将PHP的目录配置到系统path中。右击“我的电脑”,然后选择“属性”,会弹出一个对话框,在该对话框中选择“高级”标签,如图2-7所示。

图2-7 “高级”标签窗口

然后单击“环境变量”按钮,会出现如图2-8所示的对话框。

图2-8 环境变量窗口

在该对话框中选择系统变量名中的“Path”,然后单击“编辑”按钮,出现如图2-9所示的对话框。

图2-9 将PHP的目录配置到系统Path中

在“变量值”输入框的末尾添加“;php的目录;”,如“;C:\php”,然后单击“确定”按钮,环境变量配置结束。

至此,PHP5安装结束。下面介绍IIS服务器与PHP的集成。

(1)打开“Internet信息服务(IIS)管理器”,右击“网站”,在弹出的快捷菜单中选择“属性”,弹出“目录属性”对话框,然后在弹出的对话框中选择“主目录”选项卡。将“执行权限”设置为“脚本和可执行文件”,如图2-10所示。

图2-10 “主目录”选项卡

注意

“纯脚本”与“脚本和可执行文件”的区别。如果将应用程序的权限设置为“纯脚本”,则可以让映射到脚本引擎的应用程序在此目录中运行,但不拥有可执行文件的执行权限;如果将应用程序的权限设置为“脚本和可执行文件”,则允许应用程序在此目录中运行,其中包括映射到脚本引擎的应用程序和Windows的二进制文件(.dll和.exe文件),所以将权限设置为“纯脚本”比将权限设置为“脚本和可执行文件”更安全。

(2)添加PHP支持。单击图2-10中的“配置”按钮,将弹出“应用程序配置”对话框,如图2-11所示。

图2-11 “应用程序配置”对话框

在“映射”选项卡中,单击“添加”按钮,会出现如图2-12所示的对话框,在“可执行文件”位置单击“浏览”按钮,选择php目录下的“php5isapi.dll”,“扩展名”处输入“.php”,然后单击“确定”按钮。

图2-12 添加/编辑应用程序对话框

(3)关闭网站属性对话框,在“Internet信息服务(IIS)管理器”中选择“Web服务扩展”,点击“添加一个新的Web服务扩展”选项,如图2-13所示。

图2-13 Internet信息服务(IIS)管理器界面

然后在弹出的“新建Web服务扩展”对话框中填写“扩展名”为“.php”,在“要求的文件”后单击“添加”按钮,选择php目录下的php5isapi.dll,勾选下方的“设置扩展状态为允许”,再单击“确定”按钮,如图2-14所示。

图2-14 新建Web服务扩展界面

(4)关闭所有界面,重启Internet信息服务(IIS)管理器,至此设置完成。

测试Internet信息服务(IIS)管理器对PHP的支持性,在“C:\Inetput\wwwroot\”目录下创建页面phpdemo.php,使用记事本打开该文件,输入如下内容:

        <?php
            phpinfo();
        ?>

打开浏览器,输入“http://localhost/phpdemo.php”,如果出现如图2-15所示的界面,则说明PHP安装成功。

图2-15 设置成功

2.2.2 在Linux下的安装和配置

在Linux系统下搭建PHP环境要比Windows复杂一些,需要先安装一些相关的工具,并设置必要的参数。而且,如果要使用PHP扩展库,不像在Windows下修改php.ini那样简单,而是需要对PHP重新进行编译。下面将详细讲解PHP在Linux系统下的安装和配置,所选择的Linux版本为Red Hat Enterprise Linux 5。安装之前要准备的安装包有:libxml2-2.6.27.tar.gz、httpd-2.2.17.tar.gz、mysql-5.1.53-linux-i686-glibc23.tar.gz、php-5.2.14.tar.gz。

在Linux下安装软件,均需要在Linux终端下进行(选择“主菜单/应用程序/附件/终端”)(以下安装须按顺序进行)。在Linux系统下,PHP所用到的Web服务器为Apache下的HTTP Server,所以在安装PHP之前要先安装Apache服务器,安装步骤如下所示。

(1)拷贝安装包到“/usr/local”下。

          #cp httpd-2.2.17.tar.gz /usr/local/

(2)切换目录为“/usr/local”,创建目录“httpd”。

          #cd/usr/local
          #mkdir httpd

(3)解压安装包,解压完成后进入刚解压的目录。

          #tar zxvf httpd-2.2.17.tar.gz
          #cd httpd-2.2.17

(4)配置项检测,并生成makefile文件,为make做准备。

          #./configure --prefix=/usr/local/httpd --enable-so

(5)编译。

          #make

(6)开始安装。

          #make install

Apache服务的管理。

          启动服务: #/usr/local/httpd/bin/apachectl start
          停止服务: #/usr/local/httpd/bin/apachectl stop

测试Apache安装是否成功,先启动Apache服务,然后打开浏览器,输入“http://localhost”,按下“Enter”键,如果出现如图2-16所示的界面,表示安装成功。

图2-16 安装成功图示一

或者出现如图2-17所示界面,也表示安装成功。

图2-17 安装成功图示二

libxml2是一个XML C语言版的解析器,PHP访问XML文件时需要libxml2类库的支持,因此安装PHP之前,需要先安装libxml2。安装步骤如下所示:

(1)拷贝安装包到“/usr/local”下。

        #cp libxml2-2.6.27.tar.gz /usr/local/

(2)切换目录为“/usr/local”,创建目录“libxml2”。

        #cd /usr/local
        #mkdir libxml2

(3)解压安装包,解压完成后,进入刚解压的目录。

        #tar zxvf libxml2-2.6.27.tar.gz
        #cd libxml2-2.6.27

(4)配置项检测,并生成makefile文件,为make做准备。

        # ./configure --prefix=/usr/local/libxml2

(5)编译。

        #make

(6)开始安装。

        #make install

MySQL的安装和配置(详见2.3.2节)。

在Apache、libxml2和MySQL都安装成功之后就可以开始准备安装PHP 5了,安装步骤如下所示。

(1)拷贝安装包到“/usr/local”下。

        #cp php-5.2.14.tar.gz /usr/local/

(2)切换目录为“/usr/local”,创建目录“php”。

        #cd /usr/local
        #mkdir php

(3)解压安装包,解压完成后进入刚解压的目录。

          #tar zxvf php-5.2.14.tar.gz
          #cd php-5.2.14

(4)配置项检测,并生成makefile文件,为make做准备。

          #./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs
          --with-libxml-dir=/usr/local/libxml2
          --with-mysql=/usr/local/mysql
          --with-mysqli=/usr/local/mysql/bin/mysql_config
          --with-pdo-mysql=/usr/local/mysql

(5)编译。

          #make

(6)开始安装。

          #make install

PHP安装结束之后,需要修改Apache的配置文件httpd.conf(该文件在httpd/conf/下),使Apache服务器支持PHP脚本语言。

          #gedit /usr/local/httpd/conf/httpd.conf

在该文件的末尾添加如下两行语句:

          AddDefaultCharset UTF-8
          AddType application/x-httpd-php .php

(有些httpd版本中第一行语句为AddDefaultCharset ISO-8859-1,如果遇到这种情况,则将其值修改为UTF-8)。

Apache默认的访问主目录为“htdocs”。在Linux下由于用户权限的问题,因此需要将该文件夹授权给Linux系统安装时的普通用户,并设置访问权限。

          #chown -R /usr/local/httpd/htdocs/ Linux系统普通用户账号
          #chmod -R 755 /usr/local/httpd/htdocs/

测试PHP的安装和配置是否成功,在“/usr/local/httpd/htdocs/”目录下创建页面phpdemo.php,打开该文件,输入如下内容:

          <?php
              phpinfo();
          ?>

启动Apache服务器,然后打开浏览器,输入“http://localhost/phpdemo.php”,按Enter键将看到如图2-18所示的界面。

图2-18 phpinfo();显示界面

图2-18中指出PHP的配置文件php.ini并没有被加载,按照图中所指的路径,即“/usr/local/php/lib”,拷贝配置文件到该位置。

          #cp /usr/local/php-5.2.14/php.ini-recommended /usr/local/php/lib/php.ini

至此,Linux系统下PHP的安装和配置就结束了。

2.3 MySQL的安装和配置

MySQL是一个中小型的关系型数据库管理系统,由于其体积小、速度快、总体使用成本低,以及开放源码这些特点,许多中小型网站都选择MySQL作为网站数据库,而且一直被认为是PHP的最佳搭档。

本节分别为大家讲解MySQL在Windows和Linux下的安装和配置过程。MySQL的官方下载地址为http://www.mysql.com/downloads/mysql/。

2.3.1 Windows下的安装和配置

下面以mysql-essential-5.1.52-win32.msi版本为例详细讲解MySQL在Windows下的安装和配置,步骤如下所示。

(1)双击MySQL安装文件mysql-essential-5.1.52-win32.msi,进入欢迎界面,单击“Next”按钮,进入Setup Type界面,如图2-19所示。

图2-19 选择安装方式

(2)Setup Type界面中有3个单选按钮,其中“Typical”和“Complete”两种安装方式的安装路径不能改变,“Custom”方式可以让用户选择安装组件和安装路径。在此选择“Custom”选项,单击“Next”按钮。

(3)进入Custom Setup界面后,选择要安装的组件;然后单击“Change...”按钮,在弹出的对话框中选择安装路径,选择完成后单击“Next”按钮,如图2-20所示。

图2-20 选择安装组件和路径

(4)进入MySQL的准备安装界面,界面中显示了用户在以上步骤中所选择的信息。信息确认无误后,单击“Install”按钮,如图2-21所示。

图2-21 确认已选的安装信息

(5)安装完成后,会出现一些关于MySQL功能和版本的介绍。连续单击“Next”按钮,直到出现图2-22所示的界面。

图2-22 安装完成

(6)单击图2-22中的“Finish”按钮,开始MySQL服务器的配置,会出现如图2-23所示的界面。选择默认项“Detailed Configuration”,单击“Next”按钮。

图2-23 MySQL服务器的配置界面

(7)选择服务器运行模式界面。这里选择第一个默认项“Developer Machine”(该模式下MySQL服务器占用的内存空间最小,进行本地测试足够使用),单击“Next”按钮,如图2-24所示。

图2-24 服务器运行模式选择

(8)选择数据库的类型,可以选择支持MyISAM、InnoDB等多种存储引擎的数据系统,也可以选择只支持其中一种的数据库系统。默认选择“Multifunctional Database”,单击“Next”按钮,如图2-25所示。

图2-25 选择数据类型

(9)选择InnoDB数据文件的存放路径。请注意选择路径后下方所选分区的剩余空间,单击“Next”按钮,如图2-26所示。

图2-26 选择InnoDB数据文件的存放路径

(10)选择MySQL服务器的最大并发连接数量。这里可选择第一个默认项“Decision Support(DSS)/OLAP”,单击“Next”按钮,如图2-27所示。

图2-27 选择MySQL服务器的最大并发连接数量

(11)选择MySQL端口设置,默认“3306”即可,单击“Next”按钮,如图2-28所示。

图2-28 选择MySQL端口设置

(12)选择MySQL字符集设置,选中第三项“Manual Selected Default Character Set/Collation”手动设置字符集,在下方的下拉菜单中选择“utf8”,单击“Next”按钮,如图2-29所示。

图2-29 MySQL字符集设置

(13)在图2-30所示的界面中勾选两个复选框,单击“Next”按钮。

图2-30 其他相关选项

(14)设置“root”账号、密码(root账号为MySQL默认的管理员账号),单击“Next”按钮,如图2-31所示。

图2-31 设置MySQL管理员账号

(15)准备执行以上所选择的配置,单击“Execute”按钮,如图2-32所示。

图2-32 确认MySQL服务器配置信息

至此,MySQL在Windows下的安装和配置全部完成。

2.3.2 Linux下的安装和配置

Linux下MySQL的安装要复杂一些,需要先创建MySQL账号(因为Linux下root的权限太大),并将该账号加入到组群中,具体安装步骤如下。

(1)创建MySQL账号,并加入组群。

        #/usr/sbin/groupadd mysql
        #/usr/sbin/useradd -g mysql mysql

(2)拷贝安装包到“/usr/local”下。

          #cp mysql-5.1.53-linux-i686-glibc23.tar.gz /usr/local/

(3)解压安装包。

          #tar zxvf mysql-5.1.53-linux-i686-glibc23.tar.gz

(4)创建到刚解压的文件夹的链接,并命名为MySQL(创建链接方式的目的是考虑到MySQL数据库以后升级的需要)。

          #ln -s mysql-5.1.53-linux-i686-glibc23 mysql

(5)进入目录MySQL,并安装MySQL数据库。

          #cd mysql
          #./scripts/mysql_install_db --user=mysql

(6)拷贝MySQL配置文件到系统目录,并重命名为“my.cnf”。

          #cp ./support-files/my-medium.cnf /etc/my.cnf

用下面的命令可以启动和停止MySQL服务:

          #/usr/local/mysql/bin/mysqld_safe --user=mysql&
          #/usr/local/mysql/bin/mysqladmin -u root -p shutdown

Linux系统下初次安装MySQL后,root账号的密码为空,所以当使用root账号提示输入密码时直接回车即可。进入MySQL客户端,使用如下命令:

          #/usr/local/mysql/bin/mysql -u root -p

退出时,使用“exit”。

至此,MySQL在Linux下的安装和配置全部完成。

2.4 PHP与MySQL连接

在Windows系统下,如果需要在PHP 5中使用MySQL,则要在Windows系统下的php.ini文件中启动MySQL模块支持,打开php.ini,将如下3项前的分号“;”去掉。

          ;extension = php_mysql.dll
          ;extension = php_mysqli.dll
          ;extension = php_pdo_mysql.dll

在Linux系统下,编译PHP时需要将MySQL相关的模块也编译进去。

          --with-mysql=/usr/local/mysql
          --with-mysqli=/usr/local/mysql/bin/mysql_config
          --with-pdo-mysql=/usr/local/mysql

检查PHP是否支持MySQL的相关模块,打开浏览器,输入“http://localhost/phpdemo.php”,按Enter键将在页面中看到3个和MySQL相关的表格“mysql”、“mysqli”和“pdo_mysql”。

下面简单介绍PHP访问MySQL数据库的方式。

PHP访问MySQL数据库的方式有多种,可以使用PHP内建的数据库访问函数,也可以使用数据库抽象层来实现。

先来简单介绍一下如何使用PHP的内建函数访问MySQL数据库。PHP提供mysql_connect()来连接数据库,然后通过mysql_close()来关闭该连接资源。示例如下:

        <?php
            $link = mysql_connect('localhost', 'username','password');
            //建立一个MySQL连接,三个参数分别表示服务器名、用户名和密码
            mysql_select_db('test');                                 //访问test数据库
            $rs = mysql_query('select * from tb_object');            //执行SQL语句
            while($row = mysql_fetch_row($rs)){                      //配合while循环输出结果
                print_r($row);                                       //打印一行
                echo "<br/>";
            }
            mysql_close($link);                                      //关闭打开的MySQL连接
        ?>

使用PHP的内建函数访问数据库虽然方便,性能也高,但MySQL、SQL Server、Oracle等数据库的扩展却使用着不同且互不兼容的应用程序接口(API),这导致应用程序难以维护和移植。为了解决这些问题,PHP开发出了一套API来统一各种不同的关系型数据库管理系统的共有特性,从而使PHP脚本实现最大程度的抽象性和兼容性,这就是数据库抽象层。

使用数据库抽象层,意味着当从一个数据库系统向另一个数据库系统迁移时,几乎不用更改太多的程序代码。目前,比较主流的数据库抽象层有Metabase、PEAR:DB、PDO(PHP Data Object)及ADODB(Active Data Object Data Base)等,而PDO和ADODB是当今最快的数据库抽象类。

要使用数据库抽象层ADODB来操作数据库,需要先获取和安装ADODB,只需要在网上下载ADODB包,然后解压到Web服务器目录下即可(要使用ADODB,PHP必须是4.01以上的版本)。下面是使用ADODB访问MySQL数据库的简单示例。

        <?php
            require_once 'adodb/adodb.inc.php';                      //载入adodb.inc.php文件
            $conn = ADONewConnection('mysql');                       //连接MySQL数据库
            $conn->connect('localhost' , 'username' , 'password , 'test');//访问test数据库
            $rs = $conn->execute('SELECT * FROM   tb_object');
                                                                     //执行SQL语句
            while ($row = $rs->FetchRow()) {                         //配合while循环输出结果
                      print_r($row);                                 //打印一行
                      echo "<br/>";
            }
            $rs->close();
            $conn->close();
        ?>

数据库抽象层PDO是一个使用C语言开发的数据库抽象层,它是和PHP 5.1版本一起发行的,默认包含在PHP 5.1中。由于PDO需要PHP 5的核心面向对象特性的支持,因此它无法在PHP 5之前的版本中运行。下面是使用PDO访问MySQL数据库的简单示例。

          <?php
              $dsn = 'mysql:dbname=test;host=localhost';                  //设置数据源
              try {                                                       //捕获异常
              $pdo = new PDO($dsn, 'username', 'password');               //创建PDO对象
              $rs = $pdo->query('SELECT * from tb_object');     //执行SQL语句
              foreach ($rs as $row) {                                 //循环输出结果
                                    print_r($row);
                        echo "<br/>";
              }
              $pdo = null;                                              //销毁PDO对象
              } catch (PDOException $e) {                                 //异常处理
                        print "Error!: " . $e->getMessage() . "<br/>";
                        die();
              }
          ?>

以上演示了使用3种方式来访问MySQL数据库,各有各的特点。使用内建函数的方式最为直接方便,但是数据库移植性差。PDO的设计继承了PHP的特点,简洁易用,它在使用上依然使用原生的SQL,这就使得它当PHP环境中的数据库发生变化时无法做出相应的反应,也就是说,PDO不适合用在打算或有可能会变更数据库的系统中。不管后端数据库如何,ADODB存取数据库的方式都是一致的,转移数据库平台时,程序代码也不必做太大的更改,只需要改动数据库相关的配置文件即可。经过比较,ADODB比PDO更强大,但是这个抽象层的体积似乎过于庞大,全部文件加起来大约有1MB,如果只是做一个较小的网站,似乎有些大材小用,同时也会使你的网站程序看起来有些肥胖。读者可以根据自己的网站设计合理地选择一种适合的方式。

2.5 小结

本章详细介绍了开发PHP应用所需的3种软件—PHP、MySQL和IIS的安装和配置方法。首先介绍了如何在Windows下安装和配置IIS,然后分别介绍了PHP和MySQL在Windows和Linux这两个平台下的安装和配置方法,最后进解了PHP和MySQL的连接。本章特别强调了PHP运行时的多种配置选项,具有很大的参考价值。