安装 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