<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.windows.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'zh',
  ),
  'this' => 
  array (
    0 => 'install.windows.apache2.php',
    1 => '在Windows系统上安装 Apache 2.x',
    2 => '在Windows系统上安装 Apache 2.x',
  ),
  'up' => 
  array (
    0 => 'install.windows.php',
    1 => 'Windows 系统下的安装',
  ),
  'prev' => 
  array (
    0 => 'install.windows.manual.php',
    1 => '手动安装预编译的二进制文件',
  ),
  'next' => 
  array (
    0 => 'install.windows.iis.php',
    1 => 'Windows 上与 IIS 安装',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'zh',
    'path' => 'install/windows/apache2.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.windows.apache2" class="sect1">
 <h2 class="title">在Windows系统上安装 Apache 2.x</h2> 
 <p class="para">
  本节包括在 Microsoft Windows 系统中针对 Apache 2.x 安装 PHP 的指导与说明。
 </p>
 <blockquote class="note"><p><strong class="note">注意</strong>: 
  <p class="para">
   请先阅读<a href="install.windows.manual.php" class="link">手工安装步骤</a>！
  </p>
 </p></blockquote>
 <p class="para">
  强烈建议阅读 <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;Apache 文档</a> 来加深对
  Apache 2.x 服务器的基本理解。此外在继续下去之前考虑先阅读一下 Apache 2.x 的 
  <a href="http://httpd.apache.org/docs/current/platform/windows.html" class="link external">&raquo;&nbsp;Windows 下使用说明</a>。
 </p>

 <p class="para">
  下载最新版本的 <a href="https://www.apachelounge.com/download/" class="link external">&raquo;&nbsp;Apache 2.x</a>
  以及适合的 PHP 版本。先完成<a href="install.windows.manual.php" class="link">手工安装步骤</a>后再回来继续将
  PHP 集成入 Apache。
 </p>
 
 <p class="para">
  Windows 下有三种方法使 PHP 工作于 Apache 2.x 之中。可以以 handler、CGI、或者 FastCGI 方式运行 PHP。
 </p>

 <blockquote class="note"><p><strong class="note">注意</strong>: <span class="simpara">记住当在
Windows 环境下的 Apache 配置文件中添加路径值时，所有的反斜线，如
<var class="filename">c:\directory\file.ext</var>，应转换为正斜线：
<var class="filename">c:/directory/file.ext</var>。对目录来说，也必须由斜线结尾。</span></p></blockquote>

 <div class="sect2" id="install.windows.apache2.module">
  <h3 class="title">以 Apache handler 方式安装</h3>
  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <span class="simpara">
    在使用 apache2handler SAPI 时，必须使用线程安全 (TS) 版本的 PHP。
   </span>
  </p></blockquote>
  <p class="para">
   需要将以下几行加入到 Apache 的 <var class="filename">httpd.conf</var> 配置文件中以加载 Apache 2.x 的 PHP 模块：
   <div class="example" id="example-1">
    <p><strong>示例 #1 PHP 在 Apache 2.x 中作为 handler</strong></p>
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode"># 在 PHP 8.0.0 之前，模块的名称是 php7_module
LoadModule php_module &quot;c:/php/php8apache2_4.dll&quot;
&lt;FilesMatch \.php$&gt;
    SetHandler application/x-httpd-php
&lt;/FilesMatch&gt;
# 配置 php.ini 的路径
PHPIniDir &quot;C:/php&quot;</pre>
</div>
    </div>

   </div>
  </p>
  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <span class="simpara">
    必须使用实际的 PHP 路径替换掉上例中的 <var class="filename">c:/php/</var>。
    确保在 <code class="literal">LoadModule</code> 指令中引用的文件位于所指定的位置。
    PHP 7 使用 <var class="filename">php7apache2_4.dll</var>，
    PHP 8 使用  <var class="filename">php8apache2_4.dll</var>。
   </span>
  </p></blockquote>
 </div>

 <div class="sect2" id="install.windows.apache2.cgi">
  <h3 class="title">以 CGI 方式运行 PHP</h3>
  <p class="para">
   要更好地理解在 Apache 下运行 CGI，请参阅
   <a href="http://httpd.apache.org/docs/current/howto/cgi.html" class="link external">&raquo;&nbsp;Apache CGI 文档</a>。
  </p>
  <p class="para">
   要将 PHP 以 CGI 方式运行，需要将 php-cgi 文件放入到用
   ScriptAlias 指令所指定的 CGI 目录中。
  </p>
  <p class="para">
   然后需要给 PHP 文件中添加 <code class="literal">#!</code> 的一行来指明 PHP 可执行文件的位置：
   <div class="example" id="example-2">
    <p><strong>示例 #2 Apache 2.x 下 CGI 方式的 PHP</strong></p>
    <div class="example-contents">
<div class="cdata"><pre>
#!C:/php/php.exe
&lt;?php
  phpinfo();
?&gt;
</pre></div>
    </div>

   </div>
  </p>
  <div class="warning"><strong class="warning">警告</strong><p class="para">服务器使用 CGI 方式进行部署可能存在几个公开的缺陷。请阅读
<a href="security.cgi-bin.php" class="link">CGI 安全</a>一章 以学习 如何抵御这些攻击。</p></div>
 </div>

 <div class="sect2" id="install.windows.apache2.fastcgi">
  <h3 class="title">以 FastCGI 方式运行 PHP</h3>

  <p class="para">
   以 FastCGI 方式运行 PHP 比起 CGI 方式有很多优点。设定的方式很直接：
  </p>
  <p class="para">
   从 <a href="https://www.apachelounge.com/download/" class="link external">&raquo;&nbsp;https://www.apachelounge.com</a>
   取得 <code class="literal">mod_fcgid</code>，该站点有 Win32 可执行文件的下载。按照下载文件中的指示安装此模块。
  </p>
  <p class="para">
   按以下方法配置 web 服务器，注意用自己系统上的路径替换其中相应的内容：
   
   <div class="example" id="example-3">
    <p><strong>示例 #3 配置 Apache 以 FastCGI 方式运行 PHP</strong></p>
    <div class="example-contents">
<div class="cdata"><pre>
LoadModule fcgid_module modules/mod_fcgid.so  

# php.ini 文件的位置
FcgidInitialEnv PHPRC        &quot;c:/php&quot; 

&lt;FilesMatch \.php$&gt;
    SetHandler fcgid-script
&lt;/FilesMatch&gt;
FcgidWrapper &quot;c:/php/php-cgi.exe&quot; .php  
</pre></div>
   </div>

   </div>
   此时具有 <code class="literal">.php</code> 后缀的文件将被 PHP FastCGI 所解析执行。
  </p>
 </div>
</div><?php manual_footer($setup); ?>