環境需求與準備工作
在安裝 PHP 做為 WWW 服務器的一部份時,我們可以考慮用 UNIX 操作系統;或者是 Windows NT/95 等 Win32 API 的平臺。當然,大部份的人都會使用 UNIX 來當作 PHP 的執行平臺 (在 Windows NT 的用戶大多數都會選擇 IIS + ASP),因此,本書的所有內容以及范例程序都是在 UNIX 上為主。實際上,Linux + Apache + PHP 應是最經濟的選擇,因為這樣的組合幾乎是不用錢的,成本與效益比這也是最好的選擇。而許多成功網站的經驗,更是采用這種組合最好的佐證。 Linux 操作系統方面,您可以選擇各式的 Linux 套件,包括 Slackware Linux、RedHat、OpenLinux、SuSE....等等,反正這方面的軟件在店里也是很容易而且很便宜就可以買到。對學生而言,也可以去各大 FTP 站下載完整的系統安裝。
Apache 服務器則是目前最多 WWW 網站所采用的服務器。您可以到 http://www.apache.org 下載最新版的程序及相關文件,若您覺得從國外下載要很久的話,也可以用它的 Mirror 網站下載。
PHP 則可以去它的官方網站 http://www.php.net 下載所需要的程序。
雖然目前 WindowsNT 或者 Windows98 等 Win32 的系統平臺也能安裝 PHP 及 Apache 服務器,不過這似乎沒什么道理,因為 PHP 和 Apache 在 UNIX下可以跑得更快更好。
當然,若想使用商業化的系統平臺,SUN、IBM、HP、DEC、SGI、NEC 等公司都提供相關的 UNIX 或者是 WindowsNT 的系統平臺。加上高安全性調整過后的 Apache 服務器:Stronghold 或是其它支持 SSL 的 Apache 版本。這種組合,相信能滿足商業化的需求。而 PHP 就扮演著快速方便的 CGI 角色,讓客戶對網站的服務品質更加滿意。
快速配置及安裝
以下是基本的安裝步驟,運行環境是 UNIX 系列的系統平臺。在安裝之前,要先下載 apache_1.3.x.tar.gz 及 php-3.0.x.tar.gz 兩個文件。可以將這兩個文件放在 /usr/src 中再開始執行以下的步驟。下面每個行號后是一個步驟,步驟中的所有選項是連在一起的,請不要分開執行。 gzip -d -c apache_1.3.x.tar.gz | tar xvf - gzip -d -c php-3.0.x.tar.gz | tar xvf - cd apache_1.3.x ./configure --prefix=/www cd ../php-3.0.x ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars make make install cd ../apache_1.3.x ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a make make install 第一、二行利用 gzip 及 tar 加上管道功能,將壓縮文件解壓還原。然后在 Apache 的原始文件目錄中執行環境配置,--prefix 選項指示 Apache 的安裝目錄路徑。之后進入 PHP3 的原始文件目錄中,若沒有 MySQL 數據庫,則可省略 --with-mysql 的選項,重要的是一定要加入 --with-apache 選項,而且 Apache 原始文件的路徑要正確。配置完 PHP3 之后就編譯、安裝到 Apache 的原始文件目錄中。之后在 Apache 原始文件目錄中再加入 PHP 的模塊文件。在編譯及安裝 Apache 之后就初步完成了。之后就是要配置 Apache 才能讓 Web Server 順利運作。
需要注意的是,PHP 要和任何數據庫連接,都要在執行這些步驟之前先將數據庫設好,并確定 Web Server 上可以順利存取數據庫系統。如果需要其它的一些 PHP 外部模塊也要先配置好這些模塊。
cd ../php-3.0.x cp php3.ini-dist /usr/local/lib/php3.ini 之后將 php3.ini 放在指定的目錄,如果需要,也可以手動修改 php3.ini 文件文件,以符合使用的要求。
在 Apache 服務器的配置方面,要在 Apache 的配置文件 httpd.conf 或 srm.conf 文件中加入下面的字符串。告訴 Apache 服務器,擴展名 php3 是一個特殊的程序文件。當然擴展名可以設成別的擴展名,還有一些網站將 php 的程序擴展名設為 phtml 也是不錯的選擇,反正這就要看 Webmaster 的規劃了。
AddType application/x-httpd-php3 .php3
-------------------------------------------------------------------------------- 在 PHP 4.x 版的方法大致和 PHP 3.0.x 版相同,不同的地方在于 PHP 4.x 的目錄名稱及編譯后的模塊放置目錄不同。此外,默認的擴展名也由 .php3 變成了 .php。當然在安裝前還要先下載 PHP 4.x 的程序才行。
gzip -dc apache_1.3.x.tar.gz | tar xvf - gzip -dc php-4.0.x.tar.gz | tar xvf - cd apache_1.3.x ./configure --prefix=/www cd ../php-4.0.x ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars make make install cd ../apache_1.3.x ./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a make make install cd ../php-4.0.x cp php.ini-dist /usr/local/lib/php.ini 在 httpd.conf 或 srm.conf 加入
AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps
而 PHP 4.x 版中對 Apache 服務器加入了新的環境變量配置項。
php_value [PHP directive name] [value] php_flag [PHP directive name] [On|Off] php_admin_value [PHP directive name] [value] php_admin_flag [PHP directive name] [On|Off]
在 PHP 3.0.x 版中,有些目錄可能會有 .htaccess 的文件,使用 PHP 4.0.x 版的系統,必須將這個文件拿掉,可以使用改名字的方式或者直接刪除。
當一切配置好了之后,重新執行 Apache 服務器。在 Apache 目錄下有 bin 或是 sbin 的目錄,其中會有 apachectl 的 shell 程序,輸入 apachectl restart 就可以重新啟動 Apache 服務器了。趕快試看看 hello, world 程序吧!
PHP 的編譯配置詳細選項
在詳細選項上,除了上述的安裝簡介外,也可以在編譯時加入其它的選項。
apache模塊 語法: --with-apache=DIR 說明: 用本選項可以讓 PHP 以apache的模塊方式使用,DIR 的字符串可以是 /usr/local/apache 或其它安裝apache的目錄 范例: --with-apache=/var/lib/apache
fhttpd 服務器模塊 語法: --with-fhttpd=DIR 說明: 若使用 fttpd 服務器,可以使用本指令編譯 PHP。用模塊的方式配合 fttpd 服務器,可以有較好的效率。
Adabas D 數據庫 語法: --with-adabas=DIR 說明: 數據庫系統為 Adabas D 數據庫時需要加本選項。關于 Adabas D 數據庫的細節,可以參考 http://www.adabas.com。 范例: --with-adabas=/usr/local/adabasd
dBase 資料表 語法: --with-dbase 說明: 只要加本選項,不用其它的參數或函數庫,PHP 就會讓系統有存取 dBase 資料表的功能。
filePro 數據庫 語法: --with-filepro 說明: 不用指定數據庫路徑及其它函數庫等,可以讀取 filePro 數據庫 (唯讀)。
mSQL 數據庫 語法: --with-msql=DIR 說明: 提供存取 mSQL 數據庫。更多的細節請參考 mSQL 的網站 http://www.hughes.com.au。 范例: --with-msql=/usr/local/Hughes
MySQL 數據庫 語法: --with-mysql=DIR 說明: 提供存取 MySQL 數據庫。更多的細節請參考 MySQL 的網站 http://www.tcx.se。 范例: --with-mysql=/usr/local/mysql
iODBC 數據庫裝置 語法: --with-iodbc=DIR 說明: 提供 ODBC 數據庫裝置,用來存取后端數據庫。更多的細節請參考 iODBC 的網站 http://www.iodbc.org。 范例: --with-iodbc=/usr/local/iodbc
OpenLink ODBC 數據庫裝置 語法: --with-openlink=DIR 說明: 使用 OpenLink ODBC 數據庫裝置,用來存取后端數據庫。更多的細節請參考 OpenLink ODBC 的網站 http://www.openlinksw.com。 范例: --with-openlink=/usr/local/openlink
Oracle 數據庫 語法: --with-oracle=DIR 說明: 使用 Oracle 數據庫。Oracle 的版本要在 7.3 版以上。您也可以在 PHP 程序中使用環境變量 ORACLE_HOME 來指定 Oracle 的路徑。更多有關 Oracle 的信息請參考 Oracle 的網站 http://www.oracle.com。 范例: --with-oracle=/export/app/oracle/product/7.3.2
PostgreSQL 數據庫 語法: --with-pgsql=DIR 說明: 使用 PostgreSQL 數據庫。更多有關 PostgreSQL 的信息請參考 PostgreSQL 的網站 http://www.postgreSQL.org 或臺灣的 Mirror 站 http://postgresql.ccit.edu.tw。 范例: --with-pgsql=/usr/local/pgsql
Solid 數據庫 語法: --with-solid=DIR 說明: 使用 Solid 數據庫。更多有關 Solid 的信息請參考 Solid 的網站 http://www.solidtech.com。 范例: --with-solid=/usr/local/solid
Sybase 數據庫 語法: --with-sybase=DIR 說明: 使用 Sybase 數據庫。更多有關 Sybase 的信息請參考 Sybase 的網站 http://www.sybase.com。 范例: --with-sybase=/home/sybase
Sybase-CT 數據庫 語法: --with-sybase-ct=DIR 說明: 使用 Sybase-CT 數據庫。 范例: --with-sybase-ct=/home/sybase
Velocis 數據庫 語法: --with-velocis=DIR 說明: 使用 Velocis 數據庫。有關 Velocis 數據庫的進一步資料請參考 Raima 公司的網站 http://www.raima.com。 范例: --with-velocis=/usr/local/velocis
自訂 ODBC 數據庫驅動程序 語法: --with-custom-odbc=DIR 說明: 使用自訂的 ODBC 函數庫。當然,在使用本方式時要指定 CUSTOM_ODBC_LIBS 及 CFLAGS 變量。例如在 QNX 機器上使用 Sybase SQL Anywhere 時可能要配置系統環境變量 CFLAGS=-DODBC_QNX、LDFLAGS=-lunix 及 CUSTOM_ODBC_LIBS="-ldblib -lodbc",并要在 PHP 配置加入 --with-custom-odbc=/usr/lib/sqlany50 范例: --with-custom-odbc=/usr/local/odbc
不使用 ODBC 數據庫驅動程序 語法: --disable-unified-odbc 說明: 使用本選項將使所有的 ODBC 數據庫驅動程序不作用。本選項不用指定路徑,而受本選項影響的選項有 --with-iodbc、--with-solid、--with-adabas、--with-velocis 及 --with-custom-odbc。
LDAP 目錄協議 語法: --with-ldap=DIR 說明: 若要使用目錄協議 (Lightweight Directory Access Protocol, LDAP) 則必須要打開本選項。有關 LDAP 的細節,可以參考 RFC 文件的 RFC1777 及 RFC1778。 范例: --with-ldap=/usr/local/ldap.
mcrypt 編碼函數庫 語法: --with-mcrypt=DIR 說明: 當安裝了 mcrypt 函數庫后,可在編譯 PHP 時加入本選項,讓程序可以使用編解碼功能。 范例: --with-mcrypt=/usr/local/include
Sys V 信號 語法: --enable-sysvsem 說明: 要使用 SysV 的信號 (semaphores) 機制,則要打開本選項。
XML 支持 語法: --with-xml 說明: 打開本選項可以支持 James Clark's 寫的 XML 解析程序庫。
維護模式 語法: --enable-maintainer-mode 說明: 本選項一般不會打開,除非是 PHP 開發人員比較有用。
正則表達式程序庫 語法: --with-system-regex 說明: 若您需要額外的正則表達式功能,可以加入本選項。
PHP 配置文件 語法: --with-config-file-path=DIR 說明: 用來指定 php3.ini 或 php4.ini 的路徑,供 PHP 初始化時使用。 范例: --with-config-file-path=/usr/local/lib
PHP 執行路徑 語法: --with-exec-dir=DIR 說明: 有時為了系統的安全性考慮,會指定 PHP 程序一定要在哪個目錄執行。 范例: --with-exec-dir=/usr/local/bin
調試模式 語法: --enable-debug 說明: 本選項一般不會使用,除非在開發 PHP 程序時比較有用。它可以顯示額外的錯誤信息。
安全模式 語法: --enable-safe-mode 說明: 默認值是打開的,可以對系統安全提供比較多的保護。
變量追蹤 語法: --enable-track-vars 說明: 讓 PHP 能 追蹤 HTTP_GET_VARS、HTTP_POST_VARS 及 HTTP_COOKIE_VARS 三個變量,一般是打開的。
自動加引入字符 語法: --enable-magic-quotes 說明: 可讓程序在執行時自動加入反斜線的引入字符。
打開調試器 語法: --enable-debugger 說明: 打開內建的 PHP 調試器。目前本功能還在實驗階段,尚未成熟。
取消路徑 (discard path) 語法: --enable-discard-path 說明: 打開這個選項,用戶就不能透過瀏覽器讀取 .htaccess 等和系統安全相關的文件。
高精確度數學函數 語法: --enable-bcmath 說明: 打開高精確度函數。必須要先安裝本函數庫,本選項方有效。
強制 CGI 重定向 語法: --enable-force-cgi-redirect 范例: 若使用 CGI VERSION 模式來執行 PHP 的設,打開本選項會增加安全性。例如用戶讀 http://my.host/cgi-bin/php/secret/doc.html 遇到比較了解 PHP 系統的黑客級用戶可能會自已輸入以下網址 http://my.host/secret/doc.html 來讀取相關信息。若 PHP 和 Apache 編譯在一起,讓 PHP 變成 Apache 的一部份,則不需要加入本選項。
不使用短的標記 語法: --disable-short-tags 說明: 配置本選項后,PHP 的程序就不能使用短的 <? .... ?> 標記,一定要用 <?php ...... ?> 的長標記。
引入遠端檔寧 語法: --enable-url-includes 說明: 配置本選項可讓 PHP 程序可以引入 (include) 遠端的 HTTP 或 FTP 服務器中的文件。
關閉語法效果 語法: --disable-syntax-hl 說明: 使用本選項會關閉 PHP 語法的彩色效果。
函數庫路徑 語法: CPPFLAGS=-IDIR 及 LDFLAGS=-LDIR 說明: 若 PHP 在安全或編譯所需的函數庫在值得的路徑,需要加入本選項,LDFLAGS 表示函數庫的路徑,CPPFLAGS 表示標頭文件的路徑。 范例: LDFLAGS=-L/my/lib/dir CPPFLAGS=-I/my/include/dir ./configure
php.ini 配置詳細選項
php.ini 或 php3.ini 是 PHP 在啟動時會讀取的配置文件。該文件的存放路徑為 /usr/local/lib/。在 PHP 3.x 版的配置文件為 php3.ini;而在 PHP 4.x 版改為 php.ini。若 PHP 安裝成服務器的模塊,則在 Web 服務器啟動執行時會讀取,之后就不再讀取,因此改動配置的話要重新啟動 Web 服務器。若使用獨立 PHP CGI 方式,則每次都讀一次。 要看目前的系統配置,可以用 phpinfo() 看到。以下為選項配置
php_value name value 配置變量名稱和值。本選項需 PHP 4.x 版之后才能使用。
php_flag name on|off 配置標志布爾變量選項。本選項需 PHP 4.x 版之后才能使用。
php_admin_value name value 配置 Apache 的配置文件變量。原來在 .htaccess 的配置改到這個選項配置。本選項需 PHP 4.x 版之后才能使用。
php_admin_flag name on|off 配置布爾變量當標志。本選項需 PHP 4.x 版之后才能使用。
asp_tags boolean 配置 PHP 程序是否解析以 ASP Script 語法 <% %> 的標記 (tag)。本選項在 PHP 3.0.4 之后才可使用。更多的細節可以參考 嵌入方法 的部份。
auto_append_file string 配置本選項可以讓指定的文件附加在原 PHP 程序后面自動執行。若 PHP 程序中有用到 exit() 函數,則指定的文件不會執行。參數 string 即為指定自動執行的文件。
auto_prepend_file string 配置本選項可以讓指定的文件在原 PHP 程序之前自動執行。參數 string 即為指定自動執行的文件。
cgi_ext string 本選項配置 CGI 程序的擴展名。
display_errors boolean 本選項配置是否要將執行的錯誤信息顯示在用戶的瀏覽器上。
doc_root string 配置服務器的文件及 PHP 文件放置的根目錄。
engine boolean 本選項需要使用apache的模塊方式使用 PHP。可配置是否要使用 PHP 引擎。在 httpd.conf 中加入 php3_engine on/off 亦可配置某目錄或某虛擬網站是否要用 PHP 解析器。
|