安裝 PHP 5.3.x

目前存在於 FreeBSD 8.1 內的 PHP5 套件版本是 PHP 5.3.2,它已經含有 FastCGI 的支援。此外,PHP 5.3.2 包含有 FPM (FastCGI Process Manager) API, 據稱能夠更有效地管理 PHP 程序。然而,現在我們選擇不啟用 FPM,只安裝已經編譯好的套件。

# pkg_add -r php5

確認安裝好的 PHP CGI 解譯器的確有 FastCGI 支援:

# php-cgi -v

你應該會見到類似下面的文字:

PHP 5.3.2 with Suhosin-Patch (cgi-fcgi) (built: Jun 12 2010 00:11:09)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

請注意在括號內的 cgi-fcgi 字樣,它標示了 FastCGI 支援。

你需要有一份 PHP 設置檔案 php.ini 位於 /usr/local/etc。檔案 php.ini-production 是一份很好的開端。

# cd /usr/local/etc
# cp php.ini-production php.ini

接著請編輯 php.ini 內的時區設定。開啟 /usr/local/etc/php.ini 檔案,找到 [Date] 一節中的 date.timezone 那一行。修改那行來反應你伺服器的時區。例如:

[Date]
date.timezone = "America/New_York"

這使得 Apache 不再抱怨時區設定,並且也似一種安全的做法。

接下來在 php.ini 內設定 session.save_path 為你伺服器上適當的目錄。雖然這在執行 Joomla! 1.5 時並非必要,它避免了在安裝時的一則警告訊息。請編輯 /usr/local/etc/php.ini,在 [Session] 一節裡面,去除 session.save_path 那行的註釋符號,把它設成例如 /var/tmp。

[Session]
session.save_path = "/var/tmp"

現在我們需要讓 PHP 與 mod_fcgid 共同作業。建立一個檔案 fcgid-php.conf 於 /usr/local/etc/apache22/Includes,加入下面幾行:

<IfModule>
# Cause the PHP interpreter to handle files with a .php extension.
AddHandler fcgid-script .php
AddType text/html .php
# Add index.php to the list of files that will be served as directory
# indexes.
DirectoryIndex index.php
# Where to look for the php.ini file?
#DefaultInitEnv PHPRC "/etc/php5/cgi"
# Maximum requests a process handles before it is terminated
MaxRequestsPerProcess 1000
# Maximum number of PHP processes
MaxProcessCount 10
# Number of seconds of idle time before a process is terminated
IPCCommTimeout 240
IdleTimeout 240
# Command used to spawn FCGI server processes
FCGIWrapper /usr/local/bin/php-cgi .php
</IfModule>

建立一個檔案 /usr/local/www/apache22/cgi-bin/phpinfo.php,裡面只放這一行:

<?php phpinfo(); ?>

將你的瀏覽器指向 http://<your server's URL>/cgi-bin/phpinfo.php。如果依竊沒問題,它應會顯示出 PHP 資訊網頁。

還有一些值得加入的額外 PHP 延伸程式。它們有些是某些熱門 Joomla! 1.5 延伸套件所需求的,有些則是即將來到的 Joomla! 1.6 的需求。

# pkg_add -r php5-mysqli
# pkg_add -r php5-mbstring
# pkg_add -r php5-json
# pkg_add -r php5-dom
FaLang translation system by Faboba