Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 05cd670d8a02b2b4a0ffb1756f2e8308 > files > 10650

php-manual-zh-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Microsoft Windows 下的 Sun,iPlanet 和 Netscape 服务器</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="PHP 手册"
HREF="index.html"><LINK
REL="UP"
TITLE="Windows 系统下的安装"
HREF="install.windows.html"><LINK
REL="PREVIOUS"
TITLE="Microsoft Windows 下的 Apache 2.0.x"
HREF="install.windows.apache2.html"><LINK
REL="NEXT"
TITLE="OmniHTTPd Server"
HREF="install.windows.omnihttpd.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>PHP 手册</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="install.windows.apache2.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>章 6. Windows 系统下的安装</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="install.windows.omnihttpd.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="install.windows.sun"
>Microsoft Windows 下的 Sun,iPlanet 和 Netscape 服务器</A
></H1
><P
>&#13;    本节包含针对在 Windows 下 Sun Java System web 服务器,Sun ONE
    web 服务器,iPlanet 和 Netscape 服务器的 PHP 安装说明与提示。
   </P
><P
>&#13;    自 PHP 4.3.3 起可以通过
    <A
HREF="ref.nsapi.html"
>NSAPI 模块</A
>使用 PHP 脚本来<A
HREF="install.windows.sun.html#install.windows.sun.specialpages"
>产生定制目录列表于错误页面</A
>。也可以使用为兼容
    Apache 的附加函数。目前使用的 web 服务器的支持请阅读<A
HREF="install.windows.sun.html#install.windows.sun.notes"
>有关子请求的说明</A
>。
   </P
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.sun.cgi"
>Sun,iPlanet 和 Netscape 服务器的 CGI 方式安装</A
></H2
><P
>&#13;     要将 PHP 安装为 CGI 处理器,按以下步骤进行:
    </P
><P
></P
><UL
><LI
><P
>&#13;       将 <TT
CLASS="filename"
>php4ts.dll</TT
> 拷贝到 systemroot(即 Windows 的安装目录)
      </P
></LI
><LI
><P
>&#13;       在命令行做文件关联,输入以下两行命令:
       <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="shell"
>assoc .php=PHPScript
ftype PHPScript=c:\php\php.exe %1 %*</PRE
></TD
></TR
></TABLE
>
      </P
></LI
><LI
><P
>&#13;       在 Netscape Enterprise Administration Server
       中建一个空的 shellcgi 目录并随即删除(此步骤在
       obj.conf 中新建了 5 行重要指令以允许 web 服务器处理 shellcgi 脚本)。
      </P
></LI
><LI
><P
>&#13;       在 Netscape Enterprise Administration Server
       中新建一个新的 MIME 类型(Category: type,Content-Type:
       magnus-internal/shellcgi,File Suffix: php)。
      </P
></LI
><LI
><P
>&#13;       对每个要运行 PHP 的 web 服务器实例都进行以上步骤。
      </P
></LI
></UL
><P
>&#13;     更多将 PHP 设置为 CGI 可执行程序的内容见:<A
HREF="http://benoit.noss.free.fr/php/install-php.html"
TARGET="_top"
>http://benoit.noss.free.fr/php/install-php.html</A
>。
    </P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.sun.nsapi"
>Sun,iPlanet 和 Netscape 服务器的 NSAPI 方式</A
></H2
><P
>&#13;     要将 PHP 以 NSAPI 方式安装,按以下步骤进行:
    </P
><P
></P
><UL
><LI
><P
>&#13;       将 <TT
CLASS="filename"
>php4ts.dll</TT
> 拷贝到 systemroot(即 Windows 的安装目录)
      </P
></LI
><LI
><P
>&#13;       在命令行做文件关联,输入以下两行命令:
       <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="shell"
>assoc .php=PHPScript
ftype PHPScript=c:\php\php.exe %1 %*</PRE
></TD
></TR
></TABLE
>
      </P
></LI
><LI
><P
>&#13;       在 Netscape Enterprise Administration Server
       中新建一个新的 MIME 类型(Category: type,Content-Type:
       magnus-internal/x-httpd-php,File Suffix: php)。
      </P
></LI
><LI
><P
>&#13;        编辑 <TT
CLASS="filename"
>magnus.conf</TT
>(服务器版本 &#62;= 6)或
        <TT
CLASS="filename"
>obj.conf</TT
>(服务器版本 &#60;
        6)并加入下面两行;要将新行放在
        <TT
CLASS="literal"
>mime types init</TT
> 之后:
       <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>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"]</PRE
></TD
></TR
></TABLE
>
       (PHP &#62;= 4.3.3)<TT
CLASS="literal"
>php_ini</TT
> 参数为可选项,但加上后就可以把
       <TT
CLASS="filename"
>php.ini</TT
> 放到 web 服务器的配置目录中去。
      </P
></LI
><LI
><P
>&#13;       在 <TT
CLASS="filename"
>obj.conf</TT
> 中配置默认对象(对于虚拟服务器类
       [Sun web Server 6.0+] 是 <TT
CLASS="filename"
>vserver.obj.conf</TT
>
       文件):在 <TT
CLASS="literal"
>&#60;Object name="default"&#62;</TT
>
       一节,在所有的“ObjectType”行之后和所有的“AddLog”行之前加上这一行:
       <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>Service fn="php4_execute" type="magnus-internal/x-httpd-php" [inikey=value inikey=value ...]</PRE
></TD
></TR
></TABLE
>
       (PHP &#62;= 4.3.3)作为附加参数可以加入一些特殊的
       <TT
CLASS="filename"
>php.ini</TT
> 值,例如可以在调用 <TT
CLASS="literal"
>php4_execute</TT
>
       时设定专门的
       <TT
CLASS="literal"
>docroot="/path/to/docroot"</TT
>。对于布尔的
       ini 选项请用 0/1 作为值,而不是
       <TT
CLASS="literal"
>"On","Off",...</TT
>(这样不能正确工作),例如要用
       <TT
CLASS="literal"
>zlib.output_compression=1</TT
> 而不是
       <TT
CLASS="literal"
>zlib.output_compression="On"</TT
>。
      </P
></LI
><LI
><P
>&#13;       这几行仅在想要配置一个只有 PHP 脚本的目录时需要(类似 cgi-bin 目录):
       <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>&#60;Object name="x-httpd-php"&#62;
ObjectType fn="force-type" type="magnus-internal/x-httpd-php"
Service fn=php4_execute [inikey=value inikey=value ...]
&#60;/Object&#62;</PRE
></TD
></TR
></TABLE
>
       在此之后可以在管理服务器中配置目录并将其类型设为
       <TT
CLASS="literal"
>x-httpd-php</TT
>。其中的所有文件都将作为 PHP
       执行。这样可以隐藏 PHP 的使用,文件名还保留为 <TT
CLASS="filename"
>.html</TT
>。
      </P
></LI
><LI
><P
>&#13;       重启动 web 服务使改动生效。
      </P
></LI
><LI
><P
>&#13;       对每个要运行 PHP 的 web 服务器实例都进行以上步骤。
      </P
></LI
></UL
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
      更多将 PHP 设置为 NSAPI内容见:<A
HREF="http://benoit.noss.free.fr/php/install-php4.html"
TARGET="_top"
>http://benoit.noss.free.fr/php/install-php4.html</A
>。
     </P
></BLOCKQUOTE
></DIV
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
      PHP 使用的堆栈大小(stacksize)依赖于 web 服务器的配置。如果在运行很大的
      PHP 脚本时死掉,建议在管理服务器中增大此值(在 "MAGNUS EDITOR" 一节中)。
     </P
></BLOCKQUOTE
></DIV
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.sun.phpini"
>CGI 环境以及推荐在 php.ini 中进行的修改</A
></H2
><P
>&#13;     在写 PHP 脚本时很重要一点是 Sun JSWS/Sun ONE
     WS/iPlanet/Netscape 是多线程 web
     服务器。因此所有的请求都运行于同一个进程空间(即
     web 服务器自己的空间)而此空间只有一个环境。如果想取得 CGI
     变量例如 <TT
CLASS="literal"
>PATH_INFO</TT
>,<TT
CLASS="literal"
>HTTP_HOST</TT
>
     等时不能用老的 PHP 3.x 的方式
     <A
HREF="function.getenv.html"
><B
CLASS="function"
>getenv()</B
></A
> 或者类似手段(<TT
CLASS="literal"
>$_ENV</TT
>)进行。只能取得运行的
     web 服务器的环境变量而没有任何有效的 CGI 变量!
    </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
      为什么环境中有一些(无效的)CGI 变量?
     </P
><P
>&#13;      解答:这是因为从管理服务器启动了 web 服务器进程,这将运行 web
      服务器的启动脚本,而你想要启动的是 CGI 脚本(CGI 脚本在管理服务器内部!)。这是为什么
      web 服务器启动的环境中有一些 CGI 环境变量的原因。可以不从管理服务器启动
      web 服务器来试验一下。用管理员用户从命令行手工启动――这样就不会看到类似
      CGI 的环境变量了。
     </P
></BLOCKQUOTE
></DIV
><P
>&#13;     PHP 4.x 中取得 CGI 变量的正确方式是使用超全局变量
     <TT
CLASS="literal"
>$_SERVER</TT
>。如果有一些老的脚本用了
     <TT
CLASS="literal"
>$HTTP_HOST</TT
> 等,那应该在 <TT
CLASS="filename"
>php.ini</TT
>
     中打开 <TT
CLASS="literal"
>register_globals</TT
>
     选项并改变变量顺序(重要提示:去掉 <TT
CLASS="literal"
>"E"</TT
>,因为这里不需要环境变量):
     <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>variables_order = "GPCS"
register_globals = On</PRE
></TD
></TR
></TABLE
>
    </P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.sun.specialpages"
>错误页面的特殊使用或定制目录列表(PHP &#62;= 4.3.3)</A
></H2
><P
>&#13;     可以用 PHP 来为 <TT
CLASS="literal"
>"404 Not Found"</TT
>
     或类似的错误提示生成错误页面。对每个想要覆盖的错误页面在
     <TT
CLASS="filename"
>obj.conf</TT
> 中的对象里加入下面这行:
     <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>Error fn="php4_execute" code=XXX script="/path/to/script.php" [inikey=value inikey=value...]</PRE
></TD
></TR
></TABLE
>
     其中的 <TT
CLASS="literal"
>XXX</TT
> 是 HTTP 错误代码。删除掉可能干扰到自己设置的任何其它
     <TT
CLASS="literal"
>Error</TT
> 指令。如果对所有可能出现的错误都用同一个脚本处理,不要
     <TT
CLASS="literal"
>code</TT
> 参数即可。脚本里可以用
     <TT
CLASS="literal"
>$_SERVER['ERROR_TYPE']</TT
> 取得 HTTP 状态代码。
    </P
><P
>&#13;     还可以生成自己定制的目录列表。只要创建一个显示目录列表的
     PHP 脚本并用下面一行在 <TT
CLASS="filename"
>obj.conf</TT
> 中替换掉相应
     <TT
CLASS="literal"
>type="magnus-internal/directory"</TT
> 默认的
     Service 设置:
     <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>Service fn="php4_execute" type="magnus-internal/directory" script="/path/to/script.php" [inikey=value inikey=value...]</PRE
></TD
></TR
></TABLE
>
     对于错误和目录列表页面,原始的 URI 和转换后的 URI
     都在变量 <TT
CLASS="literal"
>$_SERVER['PATH_INFO']</TT
> 和
     <TT
CLASS="literal"
>$_SERVER['PATH_TRANSLATED']</TT
> 中。
    </P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.sun.notes"
>有关 <A
HREF="function.nsapi-virtual.html"
><B
CLASS="function"
>nsapi_virtual()</B
></A
> 和子请求(PHP &#62;= 4.3.3)的说明</A
></H2
><P
>&#13;     NSAPI 模块现在支持 <A
HREF="function.nsapi-virtual.html"
><B
CLASS="function"
>nsapi_virtual()</B
></A
>
     函数(别名:<A
HREF="function.virtual.html"
><B
CLASS="function"
>virtual()</B
></A
>)来进行子请求并将结果插入到
     web 页面里。问题是,此函数用到了一些 NSAPI 库中没有文档说明的特性。
    </P
><P
>&#13;     在 Unix 下这不是问题,因为模块会自动寻找所需的函数并使用。如果找不到,<A
HREF="function.nsapi-virtual.html"
><B
CLASS="function"
>nsapi_virtual()</B
></A
>
     被禁用。
    </P
><P
>&#13;     在 Windows 下 DLL 处理的局限性需要使用最新的
     <TT
CLASS="filename"
>ns-httpdXX.dll</TT
> 文件中的自动检测功能。这已在版本
     6.1 及以下的服务器中测试过。如果用了更高版本的 Sun 服务器,检测会失败并禁用
     <A
HREF="function.nsapi-virtual.html"
><B
CLASS="function"
>nsapi_virtual()</B
></A
>。
    </P
><P
>&#13;     在这种情况下,试试下面的方法。在
     <TT
CLASS="filename"
>magnus.conf</TT
>/<TT
CLASS="filename"
>obj.conf</TT
>
     中的 <TT
CLASS="literal"
>php4_init</TT
> 里加入下面的参数:
     <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>Init fn=php4_init ... server_lib="ns-httpdXX.dll"</PRE
></TD
></TR
></TABLE
>
     其中 <TT
CLASS="literal"
>XX</TT
> 是正确的 DLL 版本号。在 server-root
     目录下去找合适的 DLL 的名字。文件大小最大的 DLL 就是了。
    </P
><P
>&#13;     可以用 <A
HREF="function.phpinfo.html"
><B
CLASS="function"
>phpinfo()</B
></A
> 函数来检查状态。
    </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
      但要注意:对 <A
HREF="function.nsapi-virtual.html"
><B
CLASS="function"
>nsapi_virtual()</B
></A
> 的支持是试验性质的!
     </P
></BLOCKQUOTE
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="install.windows.apache2.html"
ACCESSKEY="P"
>上一页</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>起始页</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="install.windows.omnihttpd.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Microsoft Windows 下的 Apache 2.0.x</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="install.windows.html"
ACCESSKEY="U"
>上一级</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>OmniHTTPd Server</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>