PHP  
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
search for in the  
<fhttpd 服务器CGI 和命令行设置>
Last updated: Mon, 16 Jul 2012

Sun Solaris 上的 Sun、iPlanet 和 Netscape 服务器

本节包括在 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

  1. 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)

  2. 请确认您的 PATH 变量包含适当的目录 PATH=.:/usr/local/bin:/usr/sbin:/usr/bin:/usr/ccs/bin, 并使用 export PATH 命令将其导出为环境变量。

  3. gunzip php-x.x.x.tar.gz (如果您使用 .gz 版本,否则跳到 4)

  4. tar xvf php-x.x.x.tar

  5. 进入 PHP 解压缩后的目录: cd ../php-x.x.x

  6. 在下面的步骤中,请确认 Netscape 服务器安装在 /opt/netscape/suitespot/ 目录中。否则,将下面命令中的该路径修改为正确的路径并运行:
    ./configure --with-mysql=/usr/local/mysql \
    --with-nsapi=/opt/netscape/suitespot/ \
    --enable-libgcc

  7. 运行 make,然后运行 make install

在执行了基础的安装并阅读相应的 Readme 文件后,您需要执行一些额外的配置步骤。

Sun/iPlanet/Netscape 的配置说明. 首先您需要为 LD_LIBRARY_PATH 环境变量添加一些路径,以便服务器找到所需的共享库。您可以使用 Web 服务器的启动脚本很好的完成这一工作。启动脚本通常位于:/path/to/server/https-servername/start。您或许需要编辑其配置文件,它位于:/path/to/server/https-servername/config/

  1. 添加下面一行到 mime.types(您可以在管理服务器中添加):
    type=magnus-internal/x-httpd-php exts=php

  2. 编辑 magnus.conf (若服务器 >= 6) 或 obj.conf (若服务器 < 6) 并添加下述内容。shlib 的值根据系统的配置会有所不同。它可能类似于 /opt/netscape/suitespot/bin/libphp4.so。您应该在 mime types init 后添加如下两行内容:
    Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="/opt/netscape/suitespot/bin/libphp4.so"
    Init fn="php4_init" LateInit="yes" errorString="Failed to initialize PHP!" [php_ini="/path/to/php.ini"]
    (PHP >= 4.3.3) php_ini 参数是可选的。但是若您使用它,您便可以将 php.ini 放到 Web 服务器的配置目录中去。

  3. obj.conf 中配置默认对象(对于虚拟服务器的类 [版本 6.0+] 是在 vserver.obj.conf 中):
    <Object name="default">
    .
    .
    .
    .#注意 下面一行添加在所有“ObjectType”之后,所有“AddLog”之前
    Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]
    .
    .
    </Object>
    (PHP >= 4.3.3) 作为附加的参数,您可以在 php.ini 中添加一些特别的配置选项。例如您可以设置 docroot="/path/to/docroot" 指向 php4_execute 被调用的上下文(context)。对于布尔 ini 键值,请使用 0/1 作为其值,而不是 "On"、"Off" 等(它们是无效的),例如,使用 zlib.output_compression=1,而不应使用 zlib.output_compression="On"

  4. 本步骤仅在您需要配置一个由 PHP 脚本组成的目录时由必要执行(类似于一个 cgi-bin 目录):
    <Object name="x-httpd-php">
    ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
    Service fn=php4_execute [inikey=value inikey=value ...]
    </Object>
    之后,您可以在管理服务器中配置一个目录,分配给它 x-httpd-php 风格(style)。这样在该目录中的所有文件都会被当作 PHP 来执行。这样就能很方便的将 PHP 文件更名为 .html,以隐藏 PHP。

  5. 认证的设置:PHP 认证不能与其它任何类型的认证一起工作。所有认证被传递到您的 PHP 脚本。要为整个服务器配置 PHP 认证,在默认对象中添加下面一行:
    <Object name="default">
    AuthTrans fn=php4_auth_trans
    .
    .
    .
    </Object>

  6. 要在单一目录使用 PHP 认证,添加如下内容:
    <Object ppath="d:\path\to\authenticated\dir\*">
    AuthTrans fn=php4_auth_trans
    </Object>

注: 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").

CGI 环境和对 php.ini 推荐的修改

当编写 PHP 脚本时,应特别注意 Sun JSWS/Sun ONE WS/iPlanet/Netscape 是一个多线程 Web 服务器。因此,所有请求都运行在相同的进程空间(Web 服务器自己的空间),该空间仅有一套环境变量。如果您想获得 CGI 变量,例如 PATH_INFOHTTP_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 >= 4.3.3)

您可以使用 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'] 变量中。

关于 nsapi_virtual() 和子请求的注意事项 (PHP >= 4.3.3)

NSAPI 模块现在支持 nsapi_virtual() 函数(别名: virtual()),用来在 Web 服务器上创建子请求(subrequests)和在 Web 页面插入请求的结果。此函数使用了一些 NSAPI 中还没有文档说明的函数。在 Unix 下,该模块自动查找需要的函数,若它们存在则使用它们。若不存在,函数 nsapi_virtual() 被禁用。

注: 但是必须警告您:对 nsapi_virtual() 的支持是试验性质的!




<fhttpd 服务器CGI 和命令行设置>
 Last updated: Mon, 16 Jul 2012
 
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: http://manual.phpv.net/
Last updated: Thu Jul 7 19:13:47 2005 CST