- PHP與MySQL權威指南
- 吳津津 田睿 李云 劉昊
- 124字
- 2019-03-01 14:40:52
第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運行時的多種配置選項,具有很大的參考價值。