<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/install.unix.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'install.unix.apache2.php',
    1 => 'Apache 2.x en sistemas Unix',
    2 => 'Apache 2.x en sistemas Unix',
  ),
  'up' => 
  array (
    0 => 'install.unix.php',
    1 => 'Instalaci&oacute;n en sistemas Unix',
  ),
  'prev' => 
  array (
    0 => 'install.unix.commandline.php',
    1 => 'CGI y configuraciones de l&iacute;nea de comandos',
  ),
  'next' => 
  array (
    0 => 'install.unix.nginx.php',
    1 => 'Nginx 1.4.x en sistemas Unix',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'install/unix/apache2.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="install.unix.apache2" class="sect1">
 <h2 class="title">Apache 2.x en sistemas Unix</h2>
 <p class="para">
  Esta sección contiene las notas y consejos de instalación de PHP con el servidor
  Apache 2.x en sistemas Unix.
 </p>

 <div class="warning"><strong class="warning">Advertencia</strong><p class="para">No se recomienda
    el uso de PHP en un entorno thread MPM, con Apache 2.
    Utilice el modo prefork MPM, que es el MPM por defecto para Apache 2.0 y 2.2.
    Para saber por qué, lea
    la entrada de la FAQ correspondiente a la
    <a href="faq.installation.php#faq.installation.apache2" class="link">utilización de Apache 2 en un entorno thread MPM</a>.</p></div>

 <p class="para">
  La <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;Documentación Apache</a>
  es la mejor fuente de información sobre el servidor Apache 2.x.
  La mayoría de la información sobre las opciones de instalación de Apache
  puede encontrarse allí.
 </p>

 <p class="para">
  La versión más reciente del servidor HTTP Apache puede obtenerse
  desde la <a href="http://httpd.apache.org/" class="link external">&raquo;&nbsp;página de descarga de Apache</a>,
  y una versión adaptada de PHP desde los enlaces anteriores.
  Esta guía cubre únicamente las bases de funcionamiento de Apache 2.x con PHP.
  Para más información, leer la
  <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;documentación Apache</a>.
  Los números de versión se omiten aquí, para asegurarse de que las instrucciones no sean
  incorrectas. En los ejemplos a continuación, &#039;NN&#039; deberá ser reemplazado
  por la versión específica de Apache a utilizar.
 </p>

 <p class="para">
  Actualmente hay 2 versiones de Apache 2.x - 2.4 y 2.2.
  Hay varias razones para elegir una sobre la otra; sin embargo, la versión
  2.4 es actualmente la última versión disponible y también la que recomendamos. Sin embargo, las instrucciones
  contenidas en esta guía deberían funcionar para la versión 2.4 así como para la versión 2.2. Nota: Apache httpd 2.2 está oficialmente en Fin de Vida, no habrá más desarrollo ni parches para esta versión.
 </p>

 <ol type="1">
  <li class="listitem">
   <p class="para">
    Descargue el servidor HTTP Apache desde el sitio anterior y descomprímalo :
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
tar -xzf httpd-2.x.NN.tar.gz
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    De la misma manera, descargue y descomprima las fuentes de PHP :
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
tar -xzf php-NN.tar.gz
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Compile e instale Apache. Consulte la documentación sobre la instalación
    de Apache para más detalles sobre la compilación de este software.
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cd httpd-2_x_NN
./configure --enable-so
make
make install
</pre></div>
    </div>
   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Ahora que se tiene Apache 2.x.NN disponible bajo /usr/local/apache2,
    configúrelo con soporte para la carga de módulos, así como el
    MPM prefork estándar. Para probar la instalación, utilice el procedimiento
    normal para iniciar el servidor Apache, es decir:

    <div class="informalexample">
     <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/apache2/bin/apachectl start
</pre></div>
     </div>
    </div>
    y deténgalo para continuar con la configuración de PHP :

    <div class="informalexample">
     <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/apache2/bin/apachectl stop
</pre></div>
     </div>
    </div>
   </p>
  </li>

  <li class="listitem">

   <p class="para">
    Ahora, configure y compile PHP. Será en este momento
    cuando se podrá personalizar PHP con las diversas opciones disponibles,
    como la lista de extensiones a activar. Ejecute
    <strong class="command">./configure --help</strong> para obtener la lista de opciones disponibles. En nuestro ejemplo, realizaremos
    una configuración simple, con Apache 2 y soporte MySQL.
   </p>

   <p class="para">
    Si se ha construido Apache desde las fuentes, tal como se describe anteriormente,
    el siguiente ejemplo debería ser correcto en cuanto a las rutas hacia <strong class="command">apxs</strong>, pero si
    se ha instalado Apache de otra manera, se deberán tener en cuenta las especificidades y ajustar las rutas <strong class="command">apxs</strong> en consecuencia. Tenga en cuenta que, según las distribuciones, podría ser necesario renombrar <strong class="command">apxs</strong> a <strong class="command">apxs2</strong>.
   </p>
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cd ../php-NN
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-pdo-mysql
make
make install
</pre></div>
    </div>
   </div>

   <p class="para">
    Si se decide modificar las opciones de configuración después de la instalación,
    se deberán ejecutar nuevamente las etapas <strong class="command">configure</strong>, <strong class="command">make</strong>
    y <strong class="command">make install</strong>.
    Entonces solo se necesitará reiniciar Apache para que el nuevo módulo surta efecto.
    Una recompilación de Apache no es necesaria.
   </p>

   <p class="para">
    Tenga en cuenta que, salvo indicaciones contrarias, <strong class="command">make install</strong> también instalará
    <a href="https://pear.php.net/" class="link external">&raquo;&nbsp;PEAR</a>, así como diversas herramientas PHP como
    <a href="install.pecl.phpize.php" class="link">phpize</a>, PHP CLI y
    mucho más.
   </p>

  </li>

  <li class="listitem">
   <p class="para">
    Configurar el archivo <var class="filename">php.ini</var>
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
cp php.ini-development /usr/local/lib/php.ini
</pre></div>
    </div>
   </div>

   <p class="para">
    Se debe editar el archivo <code class="literal">.ini</code> para definir las opciones PHP.
    Si se prefiere colocar <var class="filename">php.ini</var> en otro directorio, utilice
    la opción <code class="literal">--with-config-file-path=/some/path</code> en la etapa 5.
   </p>

   <p class="para">
    Si se elige el archivo <var class="filename">php.ini-production</var>, asegúrese de leer la lista
    de modificaciones correspondiente ya que puede afectar considerablemente la forma
    en que PHP funcionará.
   </p>

  </li>

  <li class="listitem">

   <p class="para">
    Edite el archivo <var class="filename">httpd.conf</var> para cargar el módulo PHP. La ruta especificada
    a la derecha de la cadena LoadModule, debe corresponder a la ruta del sistema del módulo
    PHP. <strong class="command">make install</strong> anterior debería haber realizado esta operación
    por usted, pero una simple verificación permitirá asegurarse.
   </p>

   <div class="informalexample">
    <p class="para">
     Para PHP 8:
    </p>
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">LoadModule php_module modules/libphp.so</pre>
</div>
    </div>

   </div>

   <div class="informalexample">
    <p class="para">
     Para PHP 7:
    </p>
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">LoadModule php7_module modules/libphp5.so</pre>
</div>
    </div>

   </div>

  </li>

  <li class="listitem">

   <p class="para">
    Indique a Apache que analice ciertas extensiones como scripts PHP.
    Por ejemplo, deje que Apache pase a PHP los archivos cuya extensión es
    <code class="literal">.php</code>.
    En lugar de utilizar solo la directiva <code class="literal">AddType</code> de Apache,
    se desea evitar cualquier riesgo potencialmente peligroso, cuando
    se descarga y crea un archivo como <var class="filename">exploit.php.jpg</var>,
    de ejecución PHP. Utilizando este ejemplo, se puede tener cualquier
    extensión analizada por PHP. Se ha añadido <code class="literal">.php</code> para el ejemplo.
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">&lt;FilesMatch \.php$&gt;
    SetHandler application/x-httpd-php
&lt;/FilesMatch&gt;</pre>
</div>
    </div>

   </div>

   <p class="para">
    O, si se desea permitir que los archivos <code class="literal">.php</code>, <code class="literal">.php2</code>,
    <code class="literal">.php3</code>, <code class="literal">.php4</code>, <code class="literal">.php5</code>,
    <code class="literal">.php6</code>, y <code class="literal">.phtml</code> sean
    analizados por PHP, pero nada más, se utilizará esto :
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">&lt;FilesMatch &quot;\.ph(p[2-6]?|tml)$&quot;&gt;
    SetHandler application/x-httpd-php
&lt;/FilesMatch&gt;</pre>
</div>
    </div>

   </div>

   <p class="para">
    Y para permitir que los archivos <code class="literal">.phps</code> sean manejados por el filtro del código
    fuente de PHP, y así, ser mostrados como código fuente con coloración
    sintáctica, utilice esto :
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">&lt;FilesMatch &quot;\.phps$&quot;&gt;
    SetHandler application/x-httpd-php-source
&lt;/FilesMatch&gt;</pre>
</div>
    </div>

   </div>

   <p class="para">
    <code class="literal">mod_rewrite</code> puede ser utilizado para permitir que cualquier archivo <code class="literal">.php</code>
    sea mostrado como código fuente con coloración sintáctica, sin necesidad de renombrarlo o copiarlo con una extensión <code class="literal">.phps</code>. :
   </p>

   <div class="informalexample">
    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">RewriteEngine On
RewriteRule (.*\.php)s$ $1 [H=application/x-httpd-php-source]</pre>
</div>
    </div>

   </div>

   <p class="para">
    El filtro de código fuente PHP no debería estar activo en sistemas de
    producción, ya que puede exponer código confidencial o información
    sensible contenida en el código fuente.
   </p>

  </li>

  <li class="listitem">
   <p class="para">
    Utilice el procedimiento normal para iniciar el servidor Apache, es decir:
   </p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
/usr/local/apache2/bin/apachectl start
</pre></div>
    </div>
   </div>

   <p class="para">O</p>

   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
service httpd restart
</pre></div>
    </div>
   </div>

  </li>
 </ol>

 <p class="para">
  Si se han seguido los pasos anteriores, ahora se tiene un servidor web
  Apache2 funcional con soporte PHP como módulo <code class="literal">SAPI</code>.
  Por supuesto, hay una multitud de otras opciones de configuración disponibles
  con Apache y PHP. Para más información, introduzca el comando
  <strong class="command">./configure --help</strong> en el árbol de fuentes correspondiente.
 </p>
 <p class="para">
  Apache puede ser compilado en modo multithread, seleccionando
  el MPM <var class="filename">worker</var>, en lugar del estándar
  MPM <var class="filename">prefork</var>. Esto se hace añadiendo la siguiente opción al argumento de <strong class="command">./configure</strong>, en la etapa 3 anterior:
 </p>
 <div class="informalexample">
  <div class="example-contents screen">
<div class="cdata"><pre>
--with-mpm=worker
</pre></div>
  </div>
 </div>
 <p class="para">
  Esto no debería emprenderse sin ser consciente de las consecuencias,
  y teniendo al menos una justa comprensión de lo que implica.
  La documentación de Apache sobre
  <a href="http://httpd.apache.org/docs/current/mpm.html" class="link external">&raquo;&nbsp;MPM-Modules</a>
  proporcionará información importante que permitirá tomar
  la decisión.
 </p>
 <blockquote class="note"><p><strong class="note">Nota</strong>: 
  <p class="para">
   La <a href="faq.installation.php#faq.installation.apache.multiviews" class="link">FAQ Apache
   MultiViews</a> trata sobre el uso de MultiViews con PHP.
  </p>
 </p></blockquote>
 <blockquote class="note"><p><strong class="note">Nota</strong>: 
  <p class="para">
   Para compilar una versión multithread de Apache, el sistema de destino
   debe soportar threads. En este caso, PHP también debe ser construido
   con Zend Thread Safety (ZTS). Bajo esta configuración, no todas las extensiones
   estarán disponibles. Recomendamos compilar Apache con el
   <var class="filename">prefork</var> MPM-Module.
  </p>
 </p></blockquote>
</div><?php manual_footer($setup); ?>