Sophie

Sophie

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

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
>从源程序编译</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 下的 Xitami"
HREF="install.windows.xitami.html"><LINK
REL="NEXT"
TITLE="Windows 下安装扩展库"
HREF="install.windows.extensions.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.xitami.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.extensions.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="install.windows.building"
>从源程序编译</A
></H1
><P
>&#13;  本章讲述了在 Windows 下如何使用 Microsoft 的工具编译 PHP。要在
  CygWin 中编译 PHP,请参考 <A
HREF="install.unix.html"
>Unix 系统下的安装</A
>一章。
 </P
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.building.requirement"
>需求</A
></H2
><P
>&#13;   要编译 PHP 需要 Microsoft 开发环境。推荐使用 Microsoft Visuaul C++
   6.0,不过 Visual C++ .NET 版也可以用。自 PHP 5 起也支持免费的 Microsoft
   .NET toolchain(需要安装 Windows Platform SDK,Visual C++ Toolkit
   和 .NET Framework SDK)。
  </P
><P
>&#13;   要释放下载的文件还需要一个
   ZIP 文件的解压缩工具。Windows XP 和更新的版本中已经内置了此功能。
  </P
><P
>&#13;   在开始之前,需要先下载:
  </P
><P
></P
><UL
><LI
><P
>&#13;     PHP 站点中的 win32 编译工具
     <A
HREF="http://www.php.net/extra/win32build.zip"
TARGET="_top"
>http://www.php.net/extra/win32build.zip</A
>。
    </P
></LI
><LI
><P
>&#13;     PHP 使用的 DNS 解析器的源代码:<A
HREF="http://www.php.net/extra/bindlib_w32.zip"
TARGET="_top"
>http://www.php.net/extra/bindlib_w32.zip</A
>。用这个替代
     <TT
CLASS="filename"
>win32build.zip</TT
> 中的 <TT
CLASS="filename"
>resolv.lib</TT
>。
    </P
></LI
><LI
><P
>&#13;     如果计划把 PHP 编译成 Apache 的静态模块那还需要
     <A
HREF="http://www.apache.org/dist/httpd/"
TARGET="_top"
>Apache 源程序</A
>。
    </P
></LI
></UL
><P
>&#13;   最后,还需要 PHP 本身的源代码。可以通过<A
HREF="http://www.php.net/anoncvs.php"
TARGET="_top"
>匿名
   CVS</A
> 得到最新的开发版本,一个<A
HREF="http://snaps.php.net/"
TARGET="_top"
>快照</A
>或者最新发行版本的<A
HREF="http://www.php.net/downloads.php"
TARGET="_top"
>源程序</A
>的打包文件。
  </P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.building.install"
>放到一起</A
></H2
><P
>&#13;   下载了所有的包后需要将它们解压缩到适当的位置:
   <P
></P
><UL
><LI
><P
>&#13;      建立一个工作目录作为解压缩后存放所有文件的地方,例如:<TT
CLASS="filename"
>C:\work</TT
>。
     </P
></LI
><LI
><P
>&#13;      在工作目录(<TT
CLASS="filename"
>C:\work</TT
>)下新建一个目录
      <TT
CLASS="filename"
>win32build</TT
> 并将
      <TT
CLASS="filename"
>win32build.zip</TT
> 解压缩到其中。
     </P
></LI
><LI
><P
>&#13;      在工作目录(<TT
CLASS="filename"
>C:\work</TT
>)下新建一个目录
      <TT
CLASS="filename"
>bindlib_w32</TT
> 并将
      <TT
CLASS="filename"
>bindlib_w32.zip</TT
> 解压缩到其中。
     </P
></LI
><LI
><P
>&#13;      将下载的 PHP 源程序解压缩到工作目录(<TT
CLASS="filename"
>C:\work</TT
>)中。
     </P
></LI
><LI
><P
>&#13;      要编译库还需要(或下载现成的)头文件和库文件并分别放置到
      <TT
CLASS="filename"
>C:\work\win32build\include</TT
>
      和 <TT
CLASS="filename"
>C:\work\win32build\lib</TT
>
      目录中去。
     </P
></LI
><LI
><P
>&#13;      如果没有安装有 bison 和 flex 的 Cygwin,那还需要将
      <TT
CLASS="filename"
>C:\work\win32build\bin</TT
> 目录放入系统
      PATH 中,以使此工具可以被配置脚本找到。
     </P
></LI
></UL
>
   经过以上步骤后目录结构应该如下:
  <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="screen"
>+--C:\work
|  |
|  +--bindlib_w32
|  |  |
|  |  +--arpa
|  |  |
|  |  +--conf
|  |  |
|  |  +--...
|  |
|  +--php-5.x.x
|  |  |
|  |  +--build
|  |  |
|  |  +--...
|  |  |
|  |  +--win32
|  |  |
|  |  +--...
|  |
|  +--win32build
|  |  |
|  |  +--bin
|  |  |
|  |  +--include
|  |  |
|  |  +--lib</PRE
></TD
></TR
></TABLE
>
 </P
><P
>&#13;  如果不是用 <A
HREF="http://www.cygwin.com/"
TARGET="_top"
>Cygwin</A
>
  的话,还必须新建一个目录 <TT
CLASS="filename"
>c:\usr\local\lib</TT
>
  并将 <TT
CLASS="filename"
>bison.simple</TT
> 从
  <TT
CLASS="filename"
>c:\work\win32build\bin</TT
>
  拷贝到 <TT
CLASS="filename"
>c:\usr\local\lib</TT
> 中。
  </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
    如果想使用 PEAR 以及舒适的命令行安装程序,就非要用
    CLI-SAPI。有关 PEAR 和安装程序的更多信息见
    <A
HREF="http://pear.php.net/manual"
TARGET="_top"
>PEAR</A
> 网站。
   </P
></BLOCKQUOTE
></DIV
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.building.resolvlib"
>编译 resolv.lib</A
></H2
><P
>&#13;   必须编译 <TT
CLASS="filename"
>resolv.lib</TT
>
   库。自己决定是需要调试信息(bindlib - Win32 Debug)还是不需要(bindlib
   - Win32 Release),但是要记住自己的选择,因为用 Debug 模式编译的 resolv.lib
   只能和 Debug 模式编译的 PHP 连接。编译适当的配置:
   <P
></P
><UL
><LI
><P
>&#13;      图形界面用户,通过鼠标双击
      <TT
CLASS="filename"
>C:\work\bindlib_w32\bindlib.dsw</TT
>
      运行 VC++。接着选择
      Build =&#62; Rebuild All。
     </P
></LI
><LI
><P
>&#13;      命令行用户,确认要么注册了 C++ 环境变量,要么运行了
      <B
CLASS="command"
>vcvars.bat</B
>,然后运行下面任意一行命令:
     </P
><P
></P
><UL
><LI
><P
>&#13;        <B
CLASS="command"
>msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"</B
>
       </P
></LI
><LI
><P
>&#13;        <B
CLASS="command"
>msdev bindlib.dsp /MAKE "bindlib - Win32 Release"</B
>
       </P
></LI
></UL
></LI
></UL
>
   到这一步,应该得到了一个可用的 <TT
CLASS="filename"
>resolv.lib</TT
> 在
   <TT
CLASS="filename"
>c:\work\bindlib_w32\Debug</TT
>
   或者 <TT
CLASS="filename"
>Release</TT
> 目录下。将此文件拷贝到
   <TT
CLASS="filename"
>c:\work\win32build\lib</TT
>
   目录下并覆盖同名的文件。
  </P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.building.new"
>用新编译系统编译 PHP(仅适用于 PHP &#62;=5)</A
></H2
><P
>&#13;   本节讲解了怎样用新编译系统编译 PHP &#62;=5,此系统是基于 CLI
   的,并且非常类似于 PHP 的 Unix 编译系统。
  </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>注意: </B
>
    此编译系统在 PHP 4 中不可用。请参考<A
HREF="install.windows.building.html#install.windows.building.dsw"
>用 DSW 文件编译 PHP</A
>一节。
   </P
></BLOCKQUOTE
></DIV
><P
>&#13;   开始之前要确保阅读了<A
HREF="install.windows.building.html#install.windows.building.install"
>放到一起</A
>一节并且已经编译了所有所需的库,例如
   <A
HREF="http://www.xmlsoft.org/"
TARGET="_top"
>Libxml</A
> 或
   <A
HREF="http://icu.sourceforge.net/"
TARGET="_top"
>ICU</A
>(PHP &#62;= 6 中需要)。
  </P
><P
>&#13;   首先应该打开一个用于 Visual Studio
   的命令行提示符,应在开始菜单中能找到。正常的命令提示符可能不能用,因为没有设定所需的环境变量。输入类似
   <B
CLASS="command"
>cd C:\work\php-5.x.x</B
> 的命令进入 PHP
   源程序目录。现在可以开始配置 PHP 了。
  </P
><P
>&#13;   第二步是运行 <B
CLASS="command"
>buildconf</B
>
   批处理文件来扫描文件夹寻找 <TT
CLASS="filename"
>config.w32</TT
>
   来建立配置脚本。默认时此命令还会搜索以下目录:<TT
CLASS="filename"
>pecl;
   ..\pecl; pecl\rpc; ..\pecl\rpc</TT
>。自 PHP 5.1.0
   起,可以通过 <TT
CLASS="literal"
>--add-modules-dir</TT
>
   参数来改变此行为(例如
   <B
CLASS="command"
>cscript /nologo win32/build/buildconf.js
   --add-modules-dir=../php-gtk2 --add-modules-dir=../pecl</B
>)。
  </P
><P
>&#13;   第三步是配置。要查看可用的配置选项列表,输入
   <B
CLASS="command"
>cscript /nologo configure.js --help</B
>
   命令。选择了需要激活或禁止的选项之后,输入类似
   <B
CLASS="command"
>cscript /nologo configure.js --disable-foo
   --enable-fun-ext</B
> 的命令。使用 <TT
CLASS="literal"
>--enable-foo=shared</TT
>
   将尝试将“foo”扩展库编译为共享的,可动态加载的模块。
  </P
><P
>&#13;   最后一步是编译。只需运行命令
   <B
CLASS="command"
>nmake</B
> 即可。所生成的文件(例如
   .exe 和 .dll)将会放在
   <TT
CLASS="filename"
>Release_TS</TT
> 或
   <TT
CLASS="filename"
>Debug_TS</TT
>
   目录下(如果编译的是线程安全版的话),或者是
   <TT
CLASS="filename"
>Release</TT
> 或
   <TT
CLASS="filename"
>Debug</TT
> 目录。
  </P
><P
>&#13;   作为可选项还可以运行 PHP 的测试套件,输入
   <B
CLASS="command"
>nmake test</B
> 命令。如果要做一个特定的测试,可以用
   'TESTS' 变量(例如 <B
CLASS="command"
>nmake /D TESTS=ext/sqlite/tests test</B
>
   将只执行 sqlite 测试)。要删除编译过程中生成的文件,可以用
   <B
CLASS="command"
>nmake clean</B
> 命令。
  </P
><P
>&#13;   有个很有用的选项来编译快照:<TT
CLASS="literal"
>--enable-snapshot-build</TT
>。此选项添加了一个新的编译模式(<B
CLASS="command"
>nmake build-snap</B
>)。这将尝试编译每一个可用的扩展库(默认为共享模块方式),但是忽略个别的扩展库或 SAPI 中的编译错误。
  </P
></DIV
><DIV
CLASS="sect2"
><H2
CLASS="sect2"
><A
NAME="install.windows.building.dsw"
>用 DSW 文件编译 PHP(PHP 4)</A
></H2
><P
>&#13;   自 PHP 5 起不支持用 DSW 文件来编译
   PHP,因为有了一个<A
HREF="install.windows.building.html#install.windows.building.new"
>更灵活的系统</A
>。不过还是可以用此方法,但要记住此系统并不经常维护,因此编译可能会有问题。不过这是在
   Windows 下编译 PHP 4 的唯一方法。
  </P
><DIV
CLASS="sect3"
><H3
CLASS="sect3"
><A
NAME="install.windows.building.dsw.configure"
>配置 MVC ++</A
></H3
><P
>&#13;    第一步是配置 MVC++ 来准备编译。启动
    Microsoft Visual C++,在菜单中选择 Tools =&#62; Options。在对话框中选择
    directories 标签。按顺序把下拉选项选为
    Executables,Includes 和 Library files。其内容应类似于:
    <P
></P
><UL
><LI
><P
>&#13;       Executable files:<TT
CLASS="filename"
>C:\work\win32build\bin</TT
>,Cygwin 用户:<TT
CLASS="filename"
>C:\cygwin\bin</TT
>
      </P
></LI
><LI
><P
>&#13;       Include files:<TT
CLASS="filename"
>C:\work\win32build\include</TT
>
      </P
></LI
><LI
><P
>&#13;       Library files:<TT
CLASS="filename"
>C:\work\win32build\lib</TT
>
      </P
></LI
></UL
>
   </P
></DIV
><DIV
CLASS="sect3"
><H3
CLASS="sect3"
><A
NAME="install.windows.building.dsw.compile"
>编译</A
></H3
><P
>&#13;    对于初学者最好的上手方法是编译 CGI 版本:
   </P
><P
></P
><UL
><LI
><P
>&#13;      图形界面用户,运行 VC++,选择 File =&#62; Open Workspace 菜单并选择
      <TT
CLASS="filename"
>C:\work\php-4.x.x\win32\php4ts.dsw</TT
>。接着选择
      Build =&#62; Set Active Configuration 菜单并选择想要的配置,要么是
      <TT
CLASS="literal"
>php4ts - Win32 Debug_TS</TT
> 要么是
      <TT
CLASS="literal"
>php4ts - Win32 Release_TS</TT
>。最后选择
      Build =&#62; Rebuild All。
     </P
></LI
><LI
><P
>&#13;      命令行用户,确认要么注册了 C++ 环境变量,要么运行了
      <B
CLASS="command"
>vcvars.bat</B
>,然后从
      <TT
CLASS="filename"
>C:\work\php-4.x.x\win32</TT
>
      目录下运行下面任意一行命令:
     </P
><P
></P
><UL
><LI
><P
>&#13;        <B
CLASS="command"
>msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"</B
>
       </P
></LI
><LI
><P
>&#13;        <B
CLASS="command"
>msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"</B
>
       </P
></LI
><LI
><P
>&#13;        到这一步,应该得到一个可用的
        <TT
CLASS="filename"
>php.exe</TT
> 在
        <TT
CLASS="filename"
>C:\work\php-4.x.x.\Debug_TS</TT
> 或
        <TT
CLASS="filename"
>Release_TS</TT
> 目录下。
       </P
></LI
></UL
></LI
></UL
><P
>&#13;   有可能通过编辑 <TT
CLASS="filename"
>main/config.win32.h</TT
>
   文件对编译做少量的定制。例如可以改变 <TT
CLASS="filename"
>php.ini</TT
>
   文件的默认位置,内置的扩展库,以及扩展库的默认位置。
   </P
><P
>&#13;    下一步可能想要编译 CLI 版本,这是设计用于 <A
HREF="features.commandline.html"
>PHP 的命令行方式</A
>。步骤和编译
    CGI 版本相同,只除了要选择 <TT
CLASS="literal"
>php4ts_cli - Win32 Debug_TS</TT
>
    或者 <TT
CLASS="literal"
>php4ts_cli - Win32 Release_TS</TT
>
    项目文件。成功编译后会在 <TT
CLASS="filename"
>Release_TS\cli\</TT
>
    或者 <TT
CLASS="filename"
>Debug_TS\cli\</TT
>
    目录下找到 <TT
CLASS="filename"
>php.exe</TT
> 文件。
   </P
><P
>&#13;    要编译 SAPI 模块(<TT
CLASS="filename"
>php4isapi.dll</TT
>)来将 PHP
    和 Microsoft IIS 集成起来,将 active configuration
    设为 <TT
CLASS="filename"
>php4isapi-whatever-config</TT
> 并编译所需要的 dll。.
   </P
></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.xitami.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.extensions.html"
ACCESSKEY="N"
>下一页</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Microsoft Windows 下的 Xitami</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="install.windows.html"
ACCESSKEY="U"
>上一级</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Windows 下安装扩展库</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>