<?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 => 'it',
  ),
  'this' => 
  array (
    0 => 'install.unix.apache2.php',
    1 => 'Apache 2.x su sistemi Unix',
    2 => 'Apache 2.x su sistemi Unix',
  ),
  'up' => 
  array (
    0 => 'install.unix.php',
    1 => 'Installazione su sistemi Unix',
  ),
  'prev' => 
  array (
    0 => 'install.unix.commandline.php',
    1 => 'Configurazioni CGI e da riga di comando',
  ),
  'next' => 
  array (
    0 => 'install.unix.nginx.php',
    1 => 'Nginx 1.4.x on Unix systems',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'it',
    '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 su sistemi Unix</h2>
    <p class="para">
     Questa sezione contiene appunti e suggerimenti specifici per l&#039;installazione di Apache 2.x
     con PHP su sistemi Unix.
    </p>
   
    <div class="warning"><strong class="warning">Avviso</strong><p class="para">L&#039;utilizzo di un threaded MPM
non è raccomandato in produzione con Apache 2. Usare il prefork MPM, che è
il MPM di default su Apache 2.0 e 2.2.
Per informazioni, leggere la voce correlata delle FAQ sull&#039;uso di
<a href="faq.installation.php#faq.installation.apache2" class="link">Apache2 con un threaded MPM</a></p></div>
    
    <p class="para">
     La <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;documentazione di Apache</a> 
     è la principale fonte di informazioni per il server Apache 2.x.
     Più informazioni riguardanti l&#039;installazione di Apache possono essere trovate
     nella documentazione ufficiale. 
    </p>

    <p class="para">
     La versione più recente di Apache HTTP Server può essere ottenuta dal
     <a href="http://httpd.apache.org/" class="link external">&raquo;&nbsp;sito di download di Apache</a>,
     e una versione di PHP compatibile dai siti menzionati in precedenza.
     Questa guida rapida fornisce solo le informazioni base per iniziare ad 
     utilizzare Apache 2.x e PHP. Per maggiori informazioni si legga la 
     <a href="http://httpd.apache.org/docs/current/" class="link external">&raquo;&nbsp;documentazione di Apache</a>.
     I numeri di versione sono omessi per assicurare che le
     istruzioni non siano incorrette. Nell&#039;esempio sotto, &#039;NN&#039; dovrebbe essere
     sostituito con la specifica versione di Apache che si sta utilizzando.
    </p>

    <p class="para">
     Ci sono attualmente 2 versioni di Apache 2.x - la 2.4 e la 2.2.
     Ci possono essere varie ragioni per scegliere una o l&#039;altra versione, ma la 2.4 è 
     attualmente l&#039;ultima e quella raccomandata, se quella opzione
     è disponibile. In ogni caso le istruzioni qui presentate sono utilizzabili sia con
     la versione 2.4 che con la 2.2. Da notare che Apache httpd 2.2 è ufficialmente End of Life,
     e nessun nuovo sviluppo o patch sarà effettuato.
    </p>

     <ol type="1">
     <li class="listitem">
      <p class="para">Scarica Apache HTTP Server da uno dei collegamenti menzionati 
      precedentemente ed estrailo:</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">Allo stesso modo, scarica ed estrai il codice sorgente di 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">
     Compila ed installa Apache. Consulta la documentazione di Apache 
     per maggiori dettagli.
     </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">
    Ora Apache2.x.NN è disponibile in /usr/local/apache2,
    configurato con il supporto per il caricamento di moduli e il MPM prefork standard.
    Per testare l&#039;installazione usa la normale procedura per eseguire
    il server Apache, es.: 

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

    e termina l&#039;esecuzione del server per proseguire con la configurazione di 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">
Ora, configura e compila PHP.  In questa fase è possibile personalizzare
PHP con varie opzioni, come le estensioni da abilitare. Esegui
./configure --help per una lista completa delle possibili opzioni. Nell&#039;esempio
seguente PHP sarà configurato per supportare Apache 2 e MySQL.
</p>

<p class="para">
Se si compila Apache dal codice sorgente, come descritto in precedenza, il percorso per apxs
sarà uguale a quello dell&#039;esempio seguente, ma se Apache viene installato in qualche altro modo, si
dovrà eventualmente correggere il percorso di apxs. Da ricordare che alcune distribuzioni potrebbero rinominare
apxs in apxs2.
 </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">
    Per riconfigurare le opzioni dopo l&#039;installazione,
    è necessario eseguire nuovamente i passaggi di configurazione, compilazione ed installazione.
    Sarà poi necessario
    riavviare Apache per utilizzare il nuovo modulo. Non è necessario
    compilare Apache nuovamente.
    </p>

    <p class="para">
    Nota che se non indicato diversamente, &#039;make install&#039; installerà anche PEAR,
    strumenti di PHP come phpize, PHP CLI ed altri.
    </p>

    </li>

  <li class="listitem">
  <p class="para">
  Configurazione di php.ini 
  </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">
    È possibile modificare il file .ini per impostare le opzioni di PHP. Se si desidera
    spostare il file php.ini in un&#039;altra poizione, utilizzare l&#039;opzione --with-config-file-path=/some/path al
    punto 5.
    </p>
   
    <p class="para">
    Nel caso venga utilizzato il file php.ini-production, assicurarsi di leggere la lista
    dei cambiamenti al suo interno, perché modificano il comportamento di PHP.
    </p>

    </li>

    <li class="listitem">

     <p class="para">
      Modifica il file httpd.conf per caricare il modulo PHP.  Il percorso nella parte
      destra della dichiarazione di LoadModule deve puntare al percorso del modulo
      PHP sul proprio sistema.  Il precedente comando make install potrebbe averlo già
      aggiunto, ma si verifichi per sicurezza. 
     </p>

     <div class="informalexample">
       <p class="para">
        Per 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">
        Per 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">
    Configurare Apache per analizzare certe estensioni di file con PHP. Per esempio, facciamo
    in modo che Apache analizzi i file .php con PHP.  Invece di utilizzare solamente la direttiva
    AddType, si vuole evitare di caricare e creare file potenzialmente pericolosi
    come exploit.php.jpg ed evitarne l&#039;esecuzione con PHP.  Usando il seguente
    esempio, è possibile eseguire file con qualsiasi estensione con PHP semplicemente aggiungendola 
    alla direttiva. Di seguito verrà aggiunta l&#039;estensione .php come esempio.
    </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 se si vuole far eseguire a PHP solamente i file con estensione .php, .php2, .php3, .php4, .php5,
    .php6, e .phtml, ma nient&#039;altro, useremmo questo:
    </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">
    E per permettere ai file .phps di essere gestiti dal filtro per sorgenti php, ed
    utilizzare la colorazione della sintassi per il codice sorgente, utilizzare: 
    </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">
    mod_rewrite può essere utilizzato per permettere che ogni file .php disponga
    della colorazione della sintassi per il codice sorgente, evitando di rinominare o copiare il file
    in un file .phps:
   </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">
    Il filtro per sorgenti php non dovrebbe essere abilitato in sistemi in produzione, dove
    potrebbe esporre informazioni confidenziali o sensibili incorporate nel
    codice sorgente.
    </p>

    </li>

    <li class="listitem">
   <p class="para">
   Utilizzare la normale procedura per avviare il server Apache, es. :
   </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">
     Seguendo i passi sopra indicati si avrà un server web Apache2 con il
     supporto per PHP come modulo <code class="literal">SAPI</code>.  Ovviamente ci sono
     molte altre opzioni configurabili per Apache e per PHP.  Per altre
     informazioni digita <strong class="command">./configure --help</strong> nella
     cartella corrispondente.
    </p>
    <p class="para">
     Apache può essere compilato per utilizzare il multithread selezionando il
     <var class="filename">worker</var> MPM, invece del <var class="filename">prefork</var> 
     MPM standard, quando Apache viene compilato. Questo è possibile
     aggiungendo la seguente opzione all&#039;argomento passato al comando ./configure, nel
     passo 3 precedente:
    </p>
    <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
--with-mpm=worker
</pre></div>
    </div>
    </div>
    <p class="para">
     Questa modifica non dovrebbe essere fatta senza essere consapevoli delle conseguenze di
     questa decisione e senza avere almeno una discreta comprensione
     delle sue implicazioni. La documentazione di Apache 
     riguardante <a href="http://httpd.apache.org/docs/current/mpm.html" class="link external">&raquo;&nbsp;MPM-Modules</a> tratta 
     l&#039;argomento MPM in modo molto più dettagliato.
    </p>
    <blockquote class="note"><p><strong class="note">Nota</strong>: 
     <p class="para">
      Le <a href="faq.installation.php#faq.installation.apache.multiviews" class="link">Apache MultiViews 
      FAQ</a> trattano l&#039;utilizzo delle multiviews con PHP.
     </p>
    </p></blockquote>
    <blockquote class="note"><p><strong class="note">Nota</strong>: 
     <p class="para">
      Per compilare una versione multithread di Apache, il sistema di destinazione deve supportare i thread.
      In questo caso, PHP può anche essere compilato con
      Zend Thread Safety (ZTS). Con questa configurazione, non tutte le estensioni saranno disponibili.
      La configurazione consigliata è quella di compilare Apache usando l&#039;MPM-Module
      <var class="filename">prefork</var> come di default.
     </p>
    </p></blockquote>
   </div><?php manual_footer($setup); ?>