在 Gentoo 系統下的安裝

本節包括了在 Gentoo Linux 系統下安裝 PHP 的說明和提示。

使用 Portage (emerge)

當可以下載和自己編譯 PHP 原始碼時,使用 Gentoo 的包系統安裝 PHP 是最簡單和乾淨的方法。但若果不熟悉在 Linux 下編譯軟體,可以使用本節提到的方法。

若果目前為止已經安裝好了 Gentoo 系統,可能已經習慣於使用 Portage 了。安裝 Apache 和 PHP 與安裝其它系統工具沒有什麼不同。

首先要決定是安裝 Apache 1.3.x 還是 Apache 2.x。二者均可使用 PHP,下面的步驟是基於 Apache 1.3.x 的。另一件要考慮的事情是,本地的 Portage 樹是否為最新的。若果最近沒有更新它,需要首先運行 emerge sync。這樣,便可以使用最新穩定版本的 Apache 和 PHP。

現在一切都準備好了,可以參照下面的示例安裝 Apache 和 PHP:

例子 4-7. Gentoo 下 Apache 1.3 + PHP 的安裝示例

# emerge \<apache-2
# USE="-*" emerge php mod_php
# ebuild /var/db/pkg/dev-php/mod_php-<your PHP version>/mod_php-<your PHP version>.ebuild config
# nano /etc/conf.d/apache
  Add "-D PHP4" to APACHE_OPTS

# rc-update add apache default
# /etc/init.d/apache start

可以在 Gentoo 網站上的 Portage 手冊中獲得更多關於 emerge 的訊息。

若果需要使用 Apache 2,可以在上例中簡單的使用 emerge apache 指令。

配置時進行更好的控制

在上一節,PHP 安裝時幾乎沒有安裝任何啟動的模組。在寫本文件時,唯一被啟動的模組是 XML,因為 PEAR 需要它。這可能不是想要的,不久就會發現需要更多啟動的模組,例如 MySQL、gettext、GD 等。

當自己從原始碼編譯 PHP 時,需要使用 configure 啟動所需模組。而在 Gentoo 中,只需使用 USE 旗標,它會被自動傳遞到配置腳本中。要瞭解 USE 旗標在 emerge 中是怎麼工作的,可以嘗試:

例子 4-8. 獲得所有可用的 USE 旗標清單

# USE="-*" emerge -pv php

[ebuild  N    ] dev-php/php-4.3.6-r1  -X -berkdb -crypt -curl -debug -doc
-fdftk -firebird -flash -freetds -gd -gd-external -gdbm -gmp -hardenedphp
-imap -informix -ipv6 -java -jpeg -kerberos -ldap -mcal -memlimit -mssql
-mysql -ncurses -nls -oci8 -odbc -pam -pdflib -png -postgres -qt -readline
-snmp -spell -ssl -tiff -truetype -xml2 -yaz  3,876 kB

可以從輸出中看到,PHP 可用使用很多 USE 旗標。請仔細檢視和選取所需要的旗標。若果選取的旗標所需的庫沒有安裝,Portage 會自動編譯它們。可以再次使用 emerge -pv 指令以瞭解 Portage 會根據 USE 旗標編譯哪些內容。例如,若果沒有安裝 X,而在 USE 旗標中內含了 X,Portage 將會首先編譯 X,然後再編譯 PHP。這會花去好幾個小時。

若果要編譯 PHP 並使其支援 MySQL、cURL 和 GD,使用的指令為:

例子 4-9. 使用 USE 旗標安裝 PHP

# USE="-* curl mysql gd" emerge php mod_php

在上例中,不要忘記同時 emerge php 和 mod_php。php 是 PHP 的指令行版本,而 mod_php 是 PHP 的 Apache 模組版本。

常見問題

  • 若果瀏覽 PHP 腳本時看到是 PHP 原始碼,而不是其建立的頁面,原因可能是忘記編輯 /etc/conf.d/apache 檔案。Apache 啟動時需要增加 -D PHP4 參數。要瞭解是否使用了該參數,可以在 Apache 運行之後輸入 ps ax | grep apache 指令。

  • 由於某些原因,可能在系統中安裝了多個版本的 PHP。若果是這樣的話,需要手動 unmerge 舊版本。使用 emerge unmerge mod_php-<old version> 指令。

  • 若果是因為 Java 不能 emerge PHP,嘗試在 USE 旗標的開始使用 -*。如上面的例子所示。

  • 若果在配置 Apache 和 PHP 的過程中遇到問題,可以使用關鍵字「Apache PHP」搜尋 Gentoo 論壇