Microsoft Windows 下的 Sun,iPlanet 和 Netscape 服务器

本节包含针对在 Windows 下 Sun Java System web 服务器,Sun ONE web 服务器,iPlanet 和 Netscape 服务器的 PHP 安装说明与提示。 

自 PHP 4.3.3 起可以通过 NSAPI 模块使用 PHP 脚本来产生定制目录列表于错误页面。也可以使用为兼容 Apache 的附加函数。目前使用的 web 服务器的支持请阅读有关子请求的说明。 

Sun,iPlanet 和 Netscape 服务器的 CGI 方式安装

要将 PHP 安装为 CGI 处理器,按以下步骤进行: 

◾ 将 php4ts.dll 拷贝到 systemroot(即 Windows 的安装目录);  

◾在命令行做文件关联,输入以下两行命令: 

assoc .php=PHPScript

ftype PHPScript=c:\php\php.exe %1 %*

◾ 在 Netscape Enterprise Administration Server 中建一个空的 shellcgi 目录并随即删除(此步骤在 obj.conf 中新建了 5 行重要指令以允许 web 服务器处理 shellcgi 脚本);  

◾ 在 Netscape Enterprise Administration Server 中新建一个新的 MIME 类型(Category: type,Content-Type: magnus-internal/shellcgi,File Suffix: php);  

◾ 对每个要运行 PHP 的 web 服务器实例都进行以上步骤。  

更多将 PHP 设置为 CGI 可执行程序的内容见:» http://benoit.noss.free.fr/php/install-php.html。 

Sun,iPlanet 和 Netscape 服务器的 NSAPI 方式

要将 PHP 以 NSAPI 方式安装,按以下步骤进行: 

◾ 将 php4ts.dll拷贝到 systemroot(即 Windows 的安装目录);  

◾在命令行做文件关联,输入以下两行命令: 

assoc .php=PHPScript

ftype PHPScript=c:\php\php.exe %1 %*

◾ 在 Netscape Enterprise Administration Server 中新建一个新的 MIME 类型(Category: type,Content-Type: magnus-internal/x-httpd-php,File Suffix: php);  

◾编辑 magnus.conf(服务器版本 >= 6)或 obj.conf(服务器版本 < 6)并加入下面两行;要将新行放在 mime types init之后: 

Init fn="load-modules" funcs="php4_init,php4_execute,php4_auth_trans" shlib="c:/php/sapi/php4nsapi.dll"

Init fn="php4_init" LateInit="yes" errorString="Failed to initialise PHP!" [php_ini="c:/path/to/php.ini"]

(PHP >= 4.3.3)php_ini 参数为可选项,但加上后就可以把 php.ini 放到 web 服务器的配置目录中去; 

◾在 obj.conf 中配置默认对象(对于虚拟服务器类 [Sun web Server 6.0+] 是 vserver.obj.conf文件):在 <Object name="default"> 一节,在所有的“ObjectType”行之后和所有的“AddLog”行之前加上这一行: 

Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]

(PHP >= 4.3.3)作为附加参数可以加入一些特殊的 php.ini 值,例如可以在调用 php4_execute 时设定专门的 docroot="/path/to/docroot"。对于布尔的 ini 选项请用 0/1 作为值,而不是 "On","Off",...(这样不能正确工作),例如要用 zlib.output_compression=1 而不是 zlib.output_compression="On"; 

◾这几行仅在想要配置一个只有 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。其中的所有文件都将作为 PHP 执行。这样可以隐藏 PHP 的使用,文件名还保留为 .html; 

◾ 重启动 web 服务使改动生效;  

◾ 对每个要运行 PHP 的 web 服务器实例都进行以上步骤。  

Note: 

更多将 PHP 设置为 NSAPI内容见:» http://benoit.noss.free.fr/php/install-php4.html。 

Note: 

PHP 使用的堆栈大小(stacksize)依赖于 web 服务器的配置。如果在运行很大的 PHP 脚本时死掉,建议在管理服务器中增大此值(在 "MAGNUS EDITOR" 一节中)。 

CGI 环境以及推荐在 php.ini 中进行的修改

在写 PHP 脚本时很重要一点是 Sun JSWS/Sun ONE WS/iPlanet/Netscape 是多线程 web 服务器。因此所有的请求都运行于同一个进程空间(即 web 服务器自己的空间)而此空间只有一个环境。如果想取得 CGI 变量例如 PATH_INFO,HTTP_HOST 等时不能用老的 PHP 3.x 的方式 getenv() 或者类似手段($_ENV)进行。只能取得运行的 web 服务器的环境变量而没有任何有效的 CGI 变量! 

Note: 

为什么环境中有一些(无效的)CGI 变量? 

解答:这是因为从管理服务器启动了 web 服务器进程,这将运行 web 服务器的启动脚本,而你想要启动的是 CGI 脚本(CGI 脚本在管理服务器内部!)。这是为什么 web 服务器启动的环境中有一些 CGI 环境变量的原因。可以不从管理服务器启动 web 服务器来试验一下。用管理员用户从命令行手工启动——这样就不会看到类似 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 页面里。问题是,此函数用到了一些 NSAPI 库中没有文档说明的特性。 

在 Unix 下这不是问题,因为模块会自动寻找所需的函数并使用。如果找不到, nsapi_virtual() 被禁用。 

在 Windows 下 DLL 处理的局限性需要使用最新的 ns-httpdXX.dll 文件中的自动检测功能。这已在版本 6.1 及以下的服务器中测试过。如果用了更高版本的 Sun 服务器,检测会失败并禁用 nsapi_virtual()。 

在这种情况下,试试下面的方法。在 magnus.conf/obj.conf 中的 php4_init 里加入下面的参数: 

Init fn=php4_init ... server_lib="ns-httpdXX.dll"

其中 XX 是正确的 DLL 版本号。在 server-root 目录下去找合适的 DLL 的名字。文件大小最大的 DLL 就是了。 

可以用 phpinfo() 函数来检查状态。 

Note: 

但要注意:对 nsapi_virtual() 的支持是试验性质的! 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

历史上的今天:03月29日

热门专题

大理科技管理学校|大理科技管理学校,大理科技,大理科技中等职业技术学校,大理科技管理中等职业技术学校,大理科技学校
大理科技管理学校
国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
卓越综合高中|卓越综合高中
卓越综合高中
安徽开放大学|安徽开放大学报名,安徽开放大学报考,安徽开放大学,什么是安徽开放大学,安徽开放大学学历,安徽开放大学学费,安徽开放大学报名条件,安徽开放大学报名时间,安徽开放大学学历,安徽开放大学专业
安徽开放大学
昆明网站建设|昆明网站建设,昆明网站开发,昆明网站建设公司,昆明网站建设价格,昆明网站设计,昆明网站制作,网页设计,高端网站建设,高端网站设计
昆明网站建设
易捷尔单招|易捷尔单招,易捷尔单招培训,易捷尔单招报名,易捷尔单招考试,易捷尔单招培训学校,易捷尔单招分数
易捷尔单招
自考本科|自考本科有用吗,自考文凭,自考本科文凭,自考文凭有用吗,自考本科文凭有用吗,自考文凭承认吗
自考本科
云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部