<?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 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'install.unix.apache2.php',
    1 => 'Apache 2.0 em sistemas Unix',
    2 => 'Apache 2.0 em sistemas Unix',
  ),
  'up' => 
  array (
    0 => 'install.unix.php',
    1 => 'Instala&ccedil;&atilde;o em sistemas Unix',
  ),
  'prev' => 
  array (
    0 => 'install.unix.commandline.php',
    1 => 'CGI e instala&ccedil;&otilde;es de linha de comando',
  ),
  'next' => 
  array (
    0 => 'install.unix.nginx.php',
    1 => 'Nginx 1.4.x em sistemas Unix',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    '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.0 em sistemas Unix</h2>

 <p class="para">
  Esta seção contém notas e dicas específicas para a instalação do PHP no Apache 2.x
  em sistemas Unix.
 </p>

 <div class="warning"><strong class="warning">Aviso</strong><p class="para">Não recomendamos usar um
MPM com threads no Apache 2 em produção. Use o módulo prefork, que é
o MPM padrão no Apache 2.0 e 2.2 e não usa threads.
Para obter informações sobre o motivo, leia a FAQ sobre o uso do
<a href="faq.installation.php#faq.installation.apache2" class="link">Apache2 com MPM com threads</a>.</p></div>

 <p class="para">
  A <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;documentação do Apache</a>
  é a fonte de informação com maior autoridade sobre o servidor Apache 2.x.
  Mais informações sobre opções de instalação para o Apache podem ser encontradas
  lá.
 </p>

 <p class="para">
  A versão mais recente do Servidor HTTP do Apache pode ser obtida do
  <a href="http://httpd.apache.org/" class="link external">&raquo;&nbsp;site de download Apache</a>,
  e uma versão correspondente do PHP pode ser obtida dos locais mencionados anteriormente.
  Esse guia rápido cobre apenas o básico para iniciar o uso do Apache 2.x
  e do PHP. Para mais informações, leia a
  <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;documentação do Apache</a>.
  Os números de versão estão omitidos aqui, para garantir que
  as instruções não fiquem desatualizadas. Nos exemplos abaixo, &#039;NN&#039; deve
  ser substituído com a versão específica do Apache utilizado.
 </p>

 <p class="para">
  Atualmente há duas versões do Apache 2.x. - 2.4 e 2.2.
  Embora haja várias razões para escolher entre elas, 2.4 é a versão mais
  atual, e aquela recomendada, se essa opção estiver
  disponível. Entretanto, as instruções aqui funcionarão para
  ambas as versões, 2.4 ou 2.2. Importante notar que o Apache httpd 2.2 está no final de sua vida,
  e nenhum novo desenvolvimento ou correções serão realizados nele.
 </p>

 <ol type="1">
  <li class="listitem">
   <p class="para">
    Obtenha o Apache HTTP do endereço acima e
    descompacte:
   </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">
    Da mesma forma, obtenha e descompacte o código-fonte do 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 o Apache. Consulte a documentação de instalação do Apache para
    mais detalhes de compilação.
   </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">
    Agora haverá um Apache 2.x.NN disponível em /usr/local/apache2,
    configurado com suporte a módulos carregáveis e o MPM prefork padrão.
    Para testar a instalação, utilize o procedimento usual de inicialização
    do servidor Apache. Por exemplo:

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

    e depois pare o servidor para configurar o 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">
    Agora configure e compile o PHP. Aqui pode-se personalizar o PHP
    com várias opções como, por exemplo, quais extensões estarão disponíveis. Execute
    <strong class="command">&#039;./configure --help&#039;</strong> para uma lista de opções disponíveis. Em nosso exemplo,
    iremos configurar apenas com suporte ao Apache 2 e MySQL.
   </p>

   <p class="para">
    Se o Apache foi compilado a partir do código-fonte como descrito acima, os exemplos abaixo terão
    caminhos coincidentes do <strong class="command">apxs</strong>, mas se foi instalado de outra forma, o caminho
    para o <strong class="command">apxs</strong> precisará ser ajustado. Observe que algumas distribuições podem renomear
    <strong class="command">apxs</strong> para <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">
    Se for decidido modificar as configurações depois da instalação,
    os comandos <strong class="command">configure</strong>, <strong class="command">make</strong>
    e <strong class="command">make install</strong> precisarão ser executados novamente.
    Só será necessário reiniciar o Apache para que o novo módulo seja carregado.
    Uma recompilação do Apache não será necessária.
   </p>

   <p class="para">
    Note que, por padrão, <strong class="command">make install</strong> também instalará o
    <a href="https://pear.php.net/" class="link external">&raquo;&nbsp;PEAR</a>,
    várias ferramentas do PHP como <a href="install.pecl.phpize.php" class="link">phpize</a>,
    o PHP CLI, entre outros.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Configure o <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">
    Pode-se editar o arquivo <code class="literal">.ini</code> para definir opções do PHP. Se desejar ter
    um <var class="filename">php.ini</var> em outra localização,
    utilize <code class="literal">--with-config-file-path=/algum/caminho</code> no passo 5.
   </p>

   <p class="para">
    Se for preferível utilizar o <var class="filename">php.ini-production</var>, leia atentamente
    a lista de modificações desse arquivo, já que ele afeta o comportamento do PHP.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Edite o <var class="filename">httpd.conf</var> para carregar o módulo do PHP. O caminho à direita
    da instrução <code class="literal">LoadModule</code> precisa apontar para o caminho do módulo do PHP
    no sistema. O <strong class="command">make install</strong> acima pode ter feito isso
    automaticamente, mas é bom confirmar.
   </p>

   <div class="informalexample">
    <p class="para">
     No 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">
     No PHP 7:
    </p>

    <div class="example-contents">
<div class="apache-confcode"><pre class="apache-confcode">LoadModule php7_module modules/libphp7.so</pre>
</div>
    </div>

   </div>
  </li>

  <li class="listitem">
   <p class="para">
    Configure o Apache para interpretar certas extensões de arquivos como PHP. Por exemplo, configurar
    o Apache para interpretar arquivos <code class="literal">.php</code> como scripts PHP. Em vez de utilizar apenas a diretiva <code class="literal">AddType</code>
    do Apache, é recomendado evitar uploads potencialmente perigosos e nomes de
    arquivos como <var class="filename">exploit.php.jpg</var> que possam ser executados como scripts PHP. Nesse
    exemplo, pode-se ter quaisquer extensões interpretadas como PHP, simplesmente adicionando-as.
    Adicionaremos <code class="literal">.php</code> como demonstração.
   </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">
    Alternativamente, para permitir que arquivos <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> e <code class="literal">.phtml</code> sejam
    executados como PHP, mas nenhum outro, seria desta forma:
   </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">
    Para permitir que arquivos <code class="literal">.phps</code> sejam interpretados pelo filtro de fontes do PHP e
    exibidos como código fonte destacado, utilize isto:
   </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> pode ser utilizado para permitir que qualquer arquivo <code class="literal">.php</code> seja exibido
    como código-fonte destacado, sem precisar ser renomeado ou copiado
    para um arquivo <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">
    O filtro de fontes PHP não deve ser ativado em ambiente de produção, onde
    pode expor informações confidenciais ou sensíveis incorporadas no
    código-fonte.
   </p>
  </li>

  <li class="listitem">
   <p class="para">
    Depois, utilize o procedimento normal de iniciar o servidor Apache, por exemplo:
   </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">ou</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">
  Seguindo os passos acima, o servidor web Apache2 será executado com
  suporte ao PHP como um módulo <code class="literal">SAPI</code>. Existem muitas outras
  opções de configuração disponíveis para o Apache e para o PHP. Para mais
  informações execute <strong class="command">./configure --help</strong> no diretório
  do código-fonte correspondente.
 </p>

 <p class="para">
  O Apache pode ser construído com suporte a multi-tarefas através da seleção
  do MPM <var class="filename">worker</var>, em vez do padrão
  MPM <var class="filename">prefork</var>. Isso é possível
  acrescentado-se a seguinte opção ao argumento passado para <strong class="command">./configure</strong> no
  passo 3 acima:
 </p>

 <div class="informalexample">
  <div class="example-contents screen">
<div class="cdata"><pre>
--with-mpm=worker
</pre></div>
  </div>
 </div>

 <p class="para">
  Isto não deve ser feito sem conhecer as consequências
  desta decisão, ou pelo menos ter uma boa noção de
  suas implicações. A documentação do Apache
  sobre <a href="http://httpd.apache.org/docs/current/mpm.html" class="link external">&raquo;&nbsp;módulos MPM</a>
  discute essas questões com muito mais detalhes.
 </p>

 <blockquote class="note"><p><strong class="note">Nota</strong>: 
  <p class="para">
   A seção de <a href="faq.installation.php#faq.installation.apache.multiviews" class="link">Perguntas Frequentes
   do Apache MultiViews</a> discute o uso de MultiViews com o PHP.
  </p>
 </p></blockquote>

 <blockquote class="note"><p><strong class="note">Nota</strong>: 
  <p class="para">
   Para construir uma versão multi-tarefa do Apache, o sistema de destino precisa suportar threads.
   Neste caso, o PHP também deve ser construído
   com o Zend Thread Safety (ZTS). Nesta configuração, nem todas as extensões estarão disponíveis.
   A configuração recomendada é construir o Apache com o módulo
   MPM <var class="filename">prefork</var> padrão.
  </p>
 </p></blockquote>
</div><?php manual_footer($setup); ?>