本节包括在 Sun Solaris 平台的 Sun Java System Web Server、Sun ONE Web
Server、iPlanet 和 Netscape 下安装 PHP 的说明和提示。
从 PHP 4.3.3 起,您可以使用基于 NSAPI
模块 PHP 脚本来生成自定义目录列表和错误页面。更多与
Apache 兼容的功能也可以使用。要了解如何在当前的 Web
服务器中支持此功能,请阅读关于子请求
(subrequests) 的注释。
您可以在下面的链接中了解更多关于在 Netscape Enterprise Server (NES)
中设置 PHP 的信息:
http://benoit.noss.free.fr/php/install-php4.html
要在 Sun JSWS/Sun ONE WS/iPlanet/Netscape Web 服务器中编译
PHP,请为 --with-nsapi=[DIR]
输入合适的安装目录。默认的目录通常是
/opt/netscape/suitespot/。
您还可以阅读 /php-xxx-version/sapi/nsapi/nsapi-readme.txt。
从
http://www.sunfreeware.com/ 或其它下载站点安装下面的软件包:
autoconf-2.13 |
automake-1.4 |
bison-1_25-sol26-sparc-local |
flex-2_5_4a-sol26-sparc-local |
gcc-2_95_2-sol26-sparc-local |
gzip-1.2.4-sol26-sparc-local |
m4-1_4-sol26-sparc-local |
make-3_76_1-sol26-sparc-local |
mysql-3.23.24-beta (如果您想要 mysql 支持)
|
perl-5_005_03-sol26-sparc-local |
tar-1.13 (GNU tar) |
请确认您的 PATH 变量包含适当的目录
PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin,
并使用 export PATH 命令将其导出为环境变量。
gunzip php-x.x.x.tar.gz (如果您使用 .gz 版本,否则跳到 4)
tar xvf php-x.x.x.tar
进入 PHP 解压缩后的目录:
cd ../php-x.x.x
在下面的步骤中,请确认 Netscape 服务器安装在
/opt/netscape/suitespot/
目录中。否则,将下面命令中的该路径修改为正确的路径并运行:
./configure --with-mysql=/usr/local/mysql \
--with-nsapi=/opt/netscape/suitespot/ \
--enable-libgcc |
运行 make,然后运行 make install。
在执行了基础的安装并阅读相应的 Readme 文件后,您需要执行一些额外的配置步骤。
注:
The stacksize that PHP uses depends on the configuration of the webserver. If you get
crashes with very large PHP scripts, it is recommended to raise it with the Admin Server
(in the section "MAGNUS EDITOR").
当编写 PHP 脚本时,应特别注意 Sun JSWS/Sun ONE
WS/iPlanet/Netscape 是一个多线程 Web 服务器。因此,所有请求都运行在相同的进程空间(Web
服务器自己的空间),该空间仅有一套环境变量。如果您想获得 CGI
变量,例如 PATH_INFO、HTTP_HOST 等,使用原有的
PHP 3.x 的方式(getenv()),或使用类似的方式(注册全局变量到环境变量,
$_ENV),都是不可行的。您只能获得运行中的 Web
服务器的环境变量,而不能获得任何有效的 CGI 变量!
注:
为什么在环境中存在 (无效的) CGI 变量?
答案:这是因为您从管理服务器中启动 Web 服务器进程时,运行了 Web
服务器的启动脚本,它事实上是一个 CGI 脚本(管理服务器中的一个 CGI
脚本!)。这便是为什么启动的 Web 服务器包含一些 CGI 变量。您可以尝试不从管理服务器启动
Web 服务器,用 root 用户登录使用命令行手动启动它,您会发现这些 CGI 形式的变量不复存在。
要在 PHP 4.x 中正确获得 CGI 变量,仅需修改您的脚本,使用超级全局变量
$_SERVER。如果您的老脚本中使用了
$HTTP_HOST 等变量,您应该在 php.ini 中打开
register_globals,并且要修改变量顺序(重要:从中删除 "E",因为您不需要这里的环境):
variables_order = "GPCS"
register_globals = On |
您可以使用 PHP 为 "404 Not Found" 或类似的错误代码生成错误页面。将下面几行添加到
obj.conf 中,以覆盖默认的错误页面:
Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...] |
XXX 是 HTTP 错误代码。请删除任何可能干扰您设置的
Error
指令。如果您想为所有可能存在的错误提供一个页面,则将
code 参数删除。您的脚本可以通过
$_SERVER['ERROR_TYPE'] 获得 HTTP 状态代码。
另一种可能是生成自造目录列表。只要创建一个 PHP 脚本,来显示目录列表
并在 obj.conf 中为 type="magnus-internal/directory"
将相应的默认 Service 行替换为:
Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...] |
错误和目录列表页面中,原始的 URI 和翻译的 URI 均被分别储存在
$_SERVER['PATH_INFO'] 和
$_SERVER['PATH_TRANSLATED'] 变量中。