明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

用PHP與MySQL構(gòu)建一個(gè)數(shù)據(jù)庫驅(qū)動(dòng)的網(wǎng)站(二)

[摘要]將這個(gè)腳本添加到啟動(dòng)事務(wù)中是個(gè)比較復(fù)雜的任務(wù)。如果你使用的不是RedHat Linux而且你沒有把握做這件事,你最好請教一下了解的人。在RedHat Linux中,執(zhí)行以下命令(在MySQL目錄下)會完成這個(gè)工作:% cp share/mysql/mysql.server /etc/rc.d/in...
將這個(gè)腳本添加到啟動(dòng)事務(wù)中是個(gè)比較復(fù)雜的任務(wù)。如果你使用的不是RedHat Linux而且你沒有把握做這件事,你最好請教一下了解的人。在RedHat Linux中,執(zhí)行以下命令(在MySQL目錄下)會完成這個(gè)工作:


% cp share/mysql/mysql.server /etc/rc.d/init.d/
% cd /etc/rc.d/init.d
% chmod 500 mysql.server
% cd /etc/rc.d/rc3.d
% ln -s ../init.d/mysql.server S99mysql
% cd /etc/rc.d/rc5.d
% ln -s ../init.d/mysql.server S99mysql



  現(xiàn)在一切都做好了!要測試這個(gè)工作,你可以重啟你的系統(tǒng)并對這個(gè)服務(wù)作出請求,看看它是不是正常工作了。

在Linux下安裝PHP

  正如我們前面提到的,PHP并不是一個(gè)獨(dú)立運(yùn)行的程序。它實(shí)際上是你的Web服務(wù)(可能是Apache)的一個(gè)插件。實(shí)際上你有三種方法在Apache中安裝PHP插件:

  作為一個(gè)CGI程序,Apache每次需要處理PHP頁面時(shí)運(yùn)行它。

  作為一個(gè)模塊編譯到Apache程序中。

  在Apache每次啟動(dòng)時(shí)作為一個(gè)模塊載入。

  第一種方法的安裝和配置最簡單,但是這需要Apache每次接收到PHP頁面的請求時(shí)就將PHP作為一個(gè)程序調(diào)用。這肯定會降低你的Web服務(wù)器的響應(yīng)時(shí)間,特別是同時(shí)接收到不止一個(gè)的請求時(shí)更是這樣。

  第二種方法和第三種方法在性能方面同樣的優(yōu)秀,但是很可能你已經(jīng)安裝好了Apache,你大概不想再去下載一次,并重新編譯和重新安裝。因此,我們使用第三種方法。

  首先,我們從http://www.php.net/(或者在http://www.php.net/mirrors.php中列出的鏡像站點(diǎn)之一)下載PHP的軟件包。當(dāng)我們在寫這個(gè)教程的時(shí)候,PHP 4.0已經(jīng)基本上成熟了。我自己就試過PHP 4.0-RC2,并沒有遇到任何問題。估計(jì)最終的穩(wěn)定版很快將會發(fā)布(可能到時(shí)候我們這個(gè)教程還沒寫完),我建議你安裝最新的版本,這樣當(dāng)正式版出來時(shí)你將不需要做任何變動(dòng)。在這里,我們安裝的是3.0,我會注意指出3.0和4.0在安裝時(shí)可能會有的差別。

  你所下載的文件的文件名將是php-version.tar.gz。我們的第一步是解開這個(gè)文件:


% tar xfz php-version.tar.gz
% cd php-version



  要將PHP作為Apache可載入的模塊安裝,你需要Apache的apxs程序。在個(gè)程序在絕大多數(shù)的Apache的版本中應(yīng)該都已包括,但是如果你使用的是通過RedHat Linux安裝的拷貝,你需要安裝Apache高級RPM軟件包來獲得它。你可以從你的RedHat光盤上找到這個(gè)軟件包,你也可以從http://www.redhat.com/下載。在默認(rèn)的情況下,RedHat會將這個(gè)程序安裝到/usr/sbin/apxs。如果你看到了這個(gè)文件,這證明它已經(jīng)被安裝了。

  在這個(gè)安裝過程中,你必須以超級用戶的身份登錄,因?yàn)槠渲邪艘恍⿲pache配置文件的變動(dòng)。

  下一步是配置PHP安裝程序,以使它知道選擇哪些選項(xiàng),并在哪兒尋找它所需要的程序(例如Apache和MySQL)。除非你很有把握,否則你只需輸入下面的命令(在同一行中):

% ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php --with-apxs=/usr/sbin/apxs --enable-track-vars --enable-magic-quotes --enable-debugger


  如果你已經(jīng)安裝了PHP 3.0(不是4.0或更遲的版本),你也需要通過以下附加的參數(shù)告訴它在你的系統(tǒng)中從哪兒尋找MySQL:

--with-mysql=/usr/local/mysql/


  當(dāng)經(jīng)過幾屏對顯示器的測試后,你會回到命令提示符下。下面兩個(gè)命令會編譯和安裝PHP:


% make
% make install



  PHP現(xiàn)在已經(jīng)被安裝在/usr/local/php(除非你通過上面./configure的--prefix參數(shù)指定了不同的目錄),你應(yīng)該能在同一目錄下(除非你通過上面./configure的--with-config-file-path參數(shù)指定了不同的目錄)找到名為php.ini的配置文件, PHP提供了一個(gè)php.ini的模塊文件,其文件名是php.ini-optimized (在PHP3.0中是php.ini-dist)。將這個(gè)文件拷貝到相應(yīng)的目錄:

% cp php.ini-optimized /usr/local/php/php.ini


  對于PHP 3.0:

% cp php.ini-dist /usr/local/php/php.ini


  你暫時(shí)不要擔(dān)心php.ini的優(yōu)化調(diào)整,F(xiàn)在,我們需要確保Apache知道從哪兒找PHP,這樣它才能在啟動(dòng)時(shí)裝載它。使用你熟悉的文本編輯器打開你的Apache httpd.conf 配置文件(在RedHat Linux中,在/etc/httpd/conf/httpd.conf)。 尋找象下面這樣的一行:

LoadModule php4_module lib/apache/libphp4.so


  如果你安裝的是PHP 3.0,這一行中的php4換成php3。 你所尋找的應(yīng)該是一個(gè)新的未注釋的行(不是以#開頭的行),而不是你之前注釋掉的那一行。一般情況下,它會和文件中其他LoadModule行顯示在一起。當(dāng)你找到它后,你需要改變路徑以使它能夠匹配文件中所有其他的LoadModule行。在RedHat Linux下,這意味著將這一行改變?yōu)椋?br>
LoadModule php4_module modules/libphp4.so


  然后,尋找以DirectoryIndex開始的行。這一行告訴Apache對于一個(gè)給定的目錄尋找默認(rèn)頁時(shí)所使用的文件名。通常,你會看到index.html和其他一些文件名,你需要將index.php和index.php3添加到這一行:

DirectoryIndex index.html index.cgi ... index.php index.php3


  最后,到這個(gè)文件的最后并添加一個(gè)新行來告訴Apache哪些文件的擴(kuò)展名被看成PHP文件:

AddType application/x-httpd-php .phtml .php .php3


  一切都做好后,保存改變并重啟你的Apache服務(wù)。Apache啟動(dòng)時(shí)不應(yīng)該有任何出錯(cuò)信息。

安裝后的設(shè)置

  當(dāng)PHP和MySQL都安裝好之后,不管你是在Windows下、Linux下或其他操作系統(tǒng)下,第一件事都是為MySQL設(shè)置一個(gè)“root口令”。MySQL僅僅允許經(jīng)授權(quán)的用戶訪問并操作它的數(shù)據(jù)庫中所存儲的信息,所以你必須讓MySQL清楚誰是經(jīng)授權(quán)的,誰是未經(jīng)授權(quán)的。當(dāng)MySQL第一次被安裝時(shí),它會生成一個(gè)叫“root”的用戶,該用戶可以不用口令訪問所有的東西。你的第一個(gè)任務(wù)就是為root用戶設(shè)置口令,這樣才能保證不會任何人都可以搞亂你的數(shù)據(jù)庫。

  你必須認(rèn)識到MySQL的重要性,正如Web服務(wù)和FTP服務(wù)一樣,在同一個(gè)網(wǎng)絡(luò)上的任何機(jī)器都可以訪問它。如果你在一個(gè)連接到Internet的計(jì)算機(jī)上工作,這就意味著這個(gè)世界上的任何人都可以試圖連接你的MySQL服務(wù)器!你必須立即選擇一個(gè)很難猜的口令!

  要設(shè)置MySQL中的root口令,在你安裝MySQL的目錄的bin子目錄下輸入下面的命令(包括引號):

mysqladmin -u root password "your new password"


  要確保MySQL接受這個(gè)改變,你必須告訴它重新載入經(jīng)論證的用戶和口令的列表:

mysqladmin -u root reload


  如果這個(gè)命令顯示一個(gè)錯(cuò)誤信息告訴你無法訪問,不要擔(dān)心,這僅僅證明口令已經(jīng)生效了。

  要測試你的新密碼,你可以請求MySQL服務(wù)器告訴你有關(guān)它的當(dāng)前的狀態(tài):

mysqladmin -u root -p status


  當(dāng)有提示時(shí),輸入密碼。你會看到一些簡單的信息,這些信息包含了服務(wù)的當(dāng)前狀態(tài)。-u root參數(shù)告訴程序你想要以“root”用戶登入。-p參數(shù)告訴程序在連接之前提示你輸入你的口令。status參數(shù)告訴程序你想要看看系統(tǒng)狀態(tài)。

  如果你需要關(guān)閉MySQL服務(wù)器,你可以使用下面的命令。注意這里的-u root和-p參數(shù)的含義和上面提到的一樣:

mysqladmin -u root -p shutdown


  現(xiàn)在你的MySQL數(shù)據(jù)庫系統(tǒng)已經(jīng)安全運(yùn)行了,現(xiàn)在剩下的工作就是配置PHP了。PHP是使用一個(gè)叫php.ini的文本文件配置的。如果你是在Windows下安裝PHP的,你應(yīng)該已經(jīng)拷貝了php.ini到你的Windows目錄。如果你是使用上面的說明在Linux安裝PHP的,你應(yīng)該已經(jīng)拷貝了php.ini到PHP安裝目錄下(/usr/local/php)。

  用你熟悉的文本編輯器打開php.ini 并大致瀏覽一下。絕大多數(shù)的設(shè)置已經(jīng)被很好地說明,而且絕大多數(shù)的默認(rèn)設(shè)置也可以適應(yīng)你的要求。只要檢查并確認(rèn)你的配置與下面匹配:

magic_quotes_gpc = Ondoc_root = extension_dir =


  如果你運(yùn)行的是PHP 4.0,你還需要檢查下面這一行:

register_globals = On


  如果你是在Windows下運(yùn)行PHP 3.0,去除開頭的“;”來取消下面這一行的注釋(4.0不需要):

extension=php_mysql.dll


  保存php.ini的變動(dòng),然后重啟你的Web服務(wù)器。在Linux下,如果你是以超級用戶登錄的,你可以重啟Apache:

/etc/rc.d/init.d/httpd restart


現(xiàn)在萬事俱備!現(xiàn)在唯一剩下的就是測試并確認(rèn)是不是一切OK了(參看你的第一個(gè)PHP腳本)。

如果你的Web主機(jī)提供PHP和MySQL

  如果為你提供Web空間的主機(jī)已經(jīng)為你安裝并設(shè)置了MySQL和PHP,你只希望學(xué)會如何使用它們,你需要做的事實(shí)在不多,F(xiàn)在你應(yīng)該和你的主機(jī)提供商取得聯(lián)系,以獲取如何訪問這些服務(wù)的信息。

  特別重要的,你需要獲得為你設(shè)置的訪問MySQL服務(wù)的用戶名和口令。他們可能已經(jīng)為你設(shè)置了一個(gè)空數(shù)據(jù)庫(這會防止你和同一MySQL服務(wù)器上的其他用戶在數(shù)據(jù)庫上發(fā)生混亂),你這時(shí)還需要知道這個(gè)數(shù)據(jù)庫的名字。

  有兩個(gè)方法訪問MySQL服務(wù)。第一種方法是使用telnet登入主機(jī)并使用安裝MySQL客戶端程序(mysql、mysqladmin、mysqldump等)來直接實(shí)現(xiàn)和MySQL服務(wù)實(shí)現(xiàn)互動(dòng)。第二種方法是在你自己的計(jì)算機(jī)上安裝那些客戶端程序并連接上MySQL服務(wù)器。你的Web主機(jī)可能會支持其中的一種或兩種方法,所以你得先問清楚。

  如果他們支持通過telnet登入進(jìn)行你的工作,你還需要一個(gè)通過telnet登入的用戶名和口令(這個(gè)用戶名和口令可能和你訪問MySQL服務(wù)的不一樣)。你得把這兩個(gè)設(shè)置信息都問清楚。

  如果他們支持遠(yuǎn)程訪問MySQL服務(wù),你需要下載一個(gè)程序去連接并實(shí)現(xiàn)與服務(wù)器的互動(dòng)。這個(gè)教程會假設(shè)你已經(jīng)從http://www.mysql.com/下載了一套MySQL客戶端程序。這個(gè)軟件包既可以在Window下運(yùn)行,也可以在Unix下運(yùn)行,而且是免費(fèi)的。包含在軟件包中的安裝說明非常簡單。如果你更喜歡一些圖形化界面的,你可以下載類似MySQLWinAdmin for Windows(也可以從http://www.mysql.com/獲得)。我推薦你首先學(xué)會使用基本的客戶端程序,盡管,在這些程序中使用的命令會與在PHP腳本中訪問MySQL數(shù)據(jù)庫的腳本很相像。

你的第一個(gè)PHP腳本

  為你講了那么多安裝的事,卻還一直沒有讓你嘗試PHP驅(qū)動(dòng)的Web頁面的滋味,對我來說實(shí)在是不公平的,所以在這里為你安排了一道開胃的小菜。

  打開你所熟悉的文本或HTML編輯器并建立一個(gè)叫today.php的新文件。在文件中輸入下面的內(nèi)容:







Today's Date (according to this Web server) is






  將它保存下來并按通常你放置HTML文件的那樣將其放置在你的Web站點(diǎn)上,現(xiàn)在你再通過你的瀏覽器看看這一頁。

  很棒,不是嗎?如果你通過你的瀏覽器顯示源文件,你所看到將是規(guī)范的HTML文件。在發(fā)送到你的瀏覽器之前,PHP代碼(上面的程序中所有在之間的代碼)都已經(jīng)被Web服務(wù)器解釋并轉(zhuǎn)換成通常的文本。PHP(以及其他服務(wù)器端的腳本語言)的一個(gè)優(yōu)點(diǎn)就是網(wǎng)站瀏覽者不會知道腳本語言自身。

  不要太多地在意我在這個(gè)程序中使用的代碼。不久你就會對它很熟悉了。

結(jié)語

  現(xiàn)在所有工作都如期做完了,你應(yīng)該已經(jīng)在你的Web服務(wù)器上安裝好MySQL和PHP了。如果這個(gè)小例子不能正常工作(例如,它顯示了未加處理的PHP源代碼),那肯定是安裝中出了什么問題。

  在下一章內(nèi),我們會學(xué)習(xí)關(guān)系型數(shù)據(jù)庫的基本知識,并開始使用MySQL來工作。如果你之前沒有接觸過數(shù)據(jù)庫,我肯定你會大開眼界!