<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/oci8.setup.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'it',
  ),
  'this' => 
  array (
    0 => 'oci8.installation.php',
    1 => 'Installazione',
    2 => 'Installazione',
  ),
  'up' => 
  array (
    0 => 'oci8.setup.php',
    1 => 'Installazione/Configurazione',
  ),
  'prev' => 
  array (
    0 => 'oci8.requirements.php',
    1 => 'Requisiti',
  ),
  'next' => 
  array (
    0 => 'oci8.test.php',
    1 => 'Testing',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'it',
    'path' => 'reference/oci8/configure.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="oci8.installation" class="section">
 <h2 class="title">Installazione</h2>


<div class="section" id="oci8.configure">
<h2 class="title">Configurazione di PHP con OCI8</h2>
 <p class="para">
  Rivedere la
  precedente sezione <a href="oci8.requirements.php" class="link">Requisiti</a>
  prima di configurare OCI8.
 </p>
 <p class="para">
  Per abilitare l&#039;estensione OCI8, configura PHP con l&#039;opzione
  <strong class="option configure">--with-oci8</strong>.
 </p>
 <p class="para">
  Prima di avviare il server Web, OCI8 richiede in genere diverse
  variabili di ambiente Oracle (vedere di seguito) per individuare le librerie, puntare
  ai file di configurazione e impostare alcune proprietà di base come il
  set di caratteri utilizzato dalle librerie Oracle.  Le variabili devono essere impostate
  <em>prima</em> che qualsiasi processo PHP venga avviato.
 </p>
 <p class="para">
  Il binario PHP deve collegarsi con la stessa versione principale o più recente delle
  librerie Oracle con cui è stato configurato.  Ad esempio, se si effettua la build di
  OCI8 con le librerie Oracle 11.2, anche PHP dovrebbe essere distribuito
  ed eseguito con le librerie Oracle 11.2. Le applicazioni PHP possono connettersi ad altre
  versioni di Oracle Database, poiché Oracle ha una compatibilità tra versioni client e server.
 </p>
</div>
<div class="section">
 <h2 class="title">Installazione di OCI8 come Estensione Condivisa</h2>
 <p class="para">
  L&#039;opzione di configurazione <code class="literal">shared</code>
  fa la build di OCI8 come libreria condivisa che può essere caricata dinamicamente in
  PHP.  La creazione di un&#039;estensione condivisa consente di aggiornare facilmente OCI8
  senza influire sul resto di PHP.
 </p>
 <p class="para">
  Configurare OCI8 utilizzando una delle seguenti opzioni di configurazione.
 </p>
 <p class="para">
  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     Se si utilizzano le librerie <a href="https://www.oracle.com/database/technologies/instant-client.html" class="link external">&raquo;&nbsp;Oracle Instant
     Client</a> gratuite, allora eseguire:
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
./configure --with-oci8=shared,instantclient,/path/to/instant/client/lib
</pre></div>
      </div>
     </div>
    </p>
    <p class="para">
     Se Instant Client è installato da file ZIP, assicurarsi di creare
     prima il collegamento simbolico della libreria, ad esempio <code class="literal">ln -s
     libclntsh.so.12.1 libclntsh.so</code>.
    </p>
    <p class="para">
     Se si utilizza un&#039;installazione basata su RPM di Oracle Instant Client, la
     riga di configurazione sarà simile a questa:
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/&lt;version&gt;/client/lib
</pre></div>
      </div>
     </div>
    </p>
    <p class="para">
     Per esempio, <strong class="option configure">--with-oci8=shared,instantclient,/usr/lib/oracle/12.1/client/lib</strong>
    </p>
    <p class="para">
     Si noti che il supporto di Oracle Instant Client è apparso per la prima volta in PHP
     4.3.11 e 5.0.4 e originariamente utilizzava l&#039;opzione
     <strong class="option configure">--with-oci8-instant-client</strong> per
     configurare PHP.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Se si utilizza un database Oracle o l&#039;installazione completa del client Oracle, allora eseguire:
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
./configure --with-oci8=shared,$ORACLE_HOME
</pre></div>
      </div>
     </div>
    </p>
    <p class="para">
     Assicurarsi che l&#039;utente del server web
     (<code class="literal">nobody</code>, <code class="literal">www</code>) abbia accesso alle
     librerie, ai file di inizializzazione
     e a <var class="filename">tnsnames.ora</var> (se utilizzato) sotto
     la directory <code class="literal">$ORACLE_HOME</code>.  Con Oracle
     10<em>g</em>R2, potrebbe essere necessario eseguire
     l&#039;utilità <var class="filename">$ORACLE_HOME/install/changePerm.sh</var>
     per fornire l&#039;accesso alla directory.
    </p>
   </li>
  </ul>
 </p>
 <p class="para">
  Dopo la configurazione, seguire la solita procedura di build di PHP,
  ad es. <em>make install</em>.  Verrà creata la libreria dell&#039;estensione
  condivisa OCI8 <var class="filename">oci8.so</var>. Potrebbe essere necessario
  spostarla manualmente nella directory delle estensioni PHP, specificata
  dall&#039;opzione <a href="ini.core.php#ini.extension-dir" class="link">extension_dir</a> nel
  proprio file <var class="filename">php.ini</var>.
 </p>
 <p class="para">
  Per completare l&#039;installazione di OCI8, modificare <var class="filename">php.ini</var> ed aggiungere la riga:
 </p>
 <p class="para">
  <div class="informalexample">
   <div class="example-contents screen">
<div class="cdata"><pre>
extension=oci8.so
</pre></div>
   </div>
  </div>
 </p>
</div>
<div class="section">
 <h2 class="title">Installazione di OCI8 come Estensione Compilata Staticamente</h2>
 <p class="para">
  Configurare PHP per includere OCI8 utilizzando una delle seguenti opzioni di configurazione.
 </p>
 <p class="para">
  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     Se si utilizza Oracle Instant Client, allora eseguire:
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
./configure --with-oci8=instantclient,/path/to/instant/client/lib
</pre></div>
      </div>
     </div>
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Se si utilizza un database Oracle o l&#039;installazione completa del client Oracle, allora eseguire:
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
./configure --with-oci8=$ORACLE_HOME
</pre></div>
      </div>
     </div>
    </p>
   </li>
  </ul>
 </p>
 <p class="para">
  Dopo la configurazione, seguire la solita procedura di build di PHP,
  ad es. <em>make install</em>.  Dopo che la compilazione
  è riuscita, non è necessario aggiungere <var class="filename">oci8.so</var> a
  <var class="filename">php.ini</var>. Non sono necessari passaggi di build aggiuntivi.
 </p>
</div>
<div class="section">
 <h2 class="title">Installazione di OCI8 da PECL</h2>
 <p class="para">
  L&#039;estensione OCI8 può essere aggiunta a un&#039;installazione PHP esistente
  automaticamente o manualmente
  da <a href="https://pecl.php.net/package/oci8" class="link external">&raquo;&nbsp;PECL</a>.
 </p>
 <p class="para">
  Per un&#039;installazione automatica, seguire questi passaggi:
 </p>
 <p class="para">
  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     Se si è dietro un firewall, impostare il proxy di PEAR, ad esempio:
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
pear config-set http_proxy http://my-proxy.example.com:80/
</pre></div>
      </div>
     </div>
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Eseguire
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
pecl install oci8
</pre></div>
      </div>
     </div>
    </p>
    <p class="para">
     Quando richiesto, inserire il valore di <code class="literal">$ORACLE_HOME</code>, o
     <code class="literal">instantclient,/percorso/verso/instant/client/lib</code>.
    </p>
    <p class="para">
      Nota: Non immettere la variabile <code class="literal">$ORACLE_HOME</code>
      perché non verrà espansa.  Immettere invece il percorso effettivo
      della home directory di Oracle.
    </p>
   </li>
  </ul>
 </p>
 <p class="para">
  Per un&#039;installazione manuale quando il comando <code class="literal">pecl</code> non è
  disponibile, scaricare il pacchetto PECL OCI8, ad es. <var class="filename">oci8-1.4.10.tgz</var>.
 </p>
 <p class="para">
  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     Estrarre il pacchetto:
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
tar -zxf oci8-1.4.10.tgz
cd oci8-1.4.10
</pre></div>
      </div>
     </div>
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Preparare il pacchetto:
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
phpize
</pre></div>
      </div>
     </div>
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Configurare il pacchetto, utilizzando
     <code class="literal">$ORACLE_HOME</code> o Instant Client
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
./configure -with-oci8=shared,$ORACLE_HOME
</pre></div>
      </div>
     </div>
    </p>
    <p class="para">
     or
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
./configure -with-oci8=shared,instantclient,/path/to/instant/client/lib
</pre></div>
      </div>
     </div>
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Installare il pacchetto:
    </p>
    <p class="para">
     <div class="informalexample">
      <div class="example-contents screen">
<div class="cdata"><pre>
make install
</pre></div>
      </div>
     </div>
    </p>
   </li>
  </ul>
 </p>
 <p class="para">
  Dopo un&#039;installazione automatica o manuale, modificare il proprio file
  <var class="filename">php.ini</var> e aggiungere la riga:
 </p>
 <p class="para">
  <div class="informalexample">
   <div class="example-contents screen">
<div class="cdata"><pre>
extension=oci8.so
</pre></div>
   </div>
  </div>
 </p>
 <p class="para">
  Assicurarsi che la direttiva
  <a href="ini.core.php#ini.extension-dir" class="link">extension_dir</a> del <var class="filename">php.ini</var> sia
  impostata alla directory in cui è stato installato
  <var class="filename">oci8.so</var>.
 </p>
</div>
<div class="section">
 <h2 class="title">Installazione di OCI8 su Windows</h2>
 <p class="para">
  Quando si utilizzano le librerie client Oracle 10<em>g</em>R2 su
  Windows, rimuovere il commento dalla riga
  <code class="literal">extension=php_oci8.dll</code> del file <var class="filename">php.ini</var>.  Quando si utilizzano le librerie
  client Oracle 11<em>g</em>R2 o successive, rimuovere il commento
  da <code class="literal">extension=php_oci8_11g.dll</code>
  o <code class="literal">extension=php_oci8.dll</code>. Con le librerie
  Oracle 12<em>c</em>
  utilizzare <code class="literal">extension=php_oci8_12c.dll</code>
  o <code class="literal">extension=php_oci8_11g.dll</code>
  o <code class="literal">extension=php_oci8.dll</code>. È possibile abilitare solo
  una di queste DLL alla volta. Le DLL con versioni successive possono contenere più
  funzionalità. Non tutte le DLL potrebbero essere disponibili per tutte le versioni di
  PHP. Assicurarsi
  che <a href="ini.core.php#ini.extension-dir" class="link">extension_dir</a> sia impostata
  alla directory contenente le DLL delle estensioni PHP.
 </p>
 <p class="para">
  Se si utilizza Instant Client, impostare la variabile di ambiente
  di sistema <var class="envar">PATH</var> alla directory della libreria Oracle.
 </p>
</div>
<div class="section">
 <h2 class="title">Impostazione dell&#039;Ambiente Oracle</h2>
 <p class="para">
  Prima di utilizzare questa estensione, assicurarsi che le variabili di ambiente
  Oracle siano impostate correttamente per l&#039;utente demone web. Se il server
  Web viene avviato automaticamente all&#039;avvio, assicurarsi che anche
  l&#039;ambiente di avvio sia configurato correttamente.
 </p>
 <blockquote class="note"><p><strong class="note">Nota</strong>: 
  <p class="para">
   Non impostare le variabili di ambiente Oracle
   utilizzando <span class="function"><a href="function.putenv.php" class="function">putenv()</a></span> in uno script PHP perché le librerie
   Oracle potrebbero essere caricate e inizializzate prima che lo script
   venga eseguito. Le variabili impostate con <span class="function"><a href="function.putenv.php" class="function">putenv()</a></span> possono quindi causare
   conflitti, arresti anomali o comportamenti imprevedibili.  Alcune funzioni potrebbero
   funzionare, ma altre potrebbero fornire piccoli errori. Le variabili dovrebbero essere
   impostate <em>prima</em> che il server web venga avviato.  
  </p>
 </p></blockquote>
 <p class="para">
  Su Red Hat Linux e varianti, esportare le variabili alla fine di
  <var class="filename">/etc/sysconfig/httpd</var>.  Altri sistemi con
  Apache 2 possono utilizzare uno script <var class="filename">envvars</var> nella
  directory <var class="filename">bin</var> di Apache.  Una terza opzione, la
  direttiva Apache <code class="literal">SetEnv</code>
  in <var class="filename">httpd.conf</var>, può funzionare in alcuni sistemi ma è
  nota per essere insufficiente in altri.
 </p>
 <p class="para">
  Per verificare che le variabili d&#039;ambiente siano impostate correttamente,
  usare <span class="function"><a href="function.phpinfo.php" class="function">phpinfo()</a></span> e controllare
  che la sezione <em>Environment</em> (non
  <em>Apache Environment</em>) contenga le variabili previste.
 </p>
 <p class="para">
  Le variabili che potrebbero essere necessarie sono incluse nella tabella
  seguente.  Fare riferimento alla documentazione Oracle per ulteriori informazioni su
  tutte le variabili disponibili.
  <table class="doctable table">
   <caption><strong>Variabili di Ambiente Oracle Comuni</strong></caption>
   
    <thead>
     <tr>
      <th>Nome</th>
      <th>Scopo</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td>ORACLE_HOME</td>
      <td>Contiene la directory del software Oracle Database
      completo.  Non si deve impostare quando si utilizza Oracle Instant Client in
      quanto non è necessario e potrebbe causare problemi di installazione.</td>
     </tr>

     <tr>
      <td>ORACLE_SID</td>
      <td>Contiene il nome del database sulla macchina locale a
      cui connettersi. Non è necessario impostarlo se si utilizza
      Oracle Instant Client o si passa sempre il parametro di connessione
      a <span class="function"><a href="function.oci-connect.php" class="function">oci_connect()</a></span>.</td>
     </tr>

     <tr>
      <td>LD_LIBRARY_PATH</td>
      <td>Impostare questo (o l&#039;equivalente della piattaforma, come
      <code class="literal">DYLD_LIBRARY_PATH</code>, <code class="literal">LIBPATH</code>
      o <code class="literal">SHLIB_PATH</code>) alla posizione delle librerie
      Oracle, ad esempio <var class="filename">$ORACLE_HOME/lib</var>
      o <var class="filename">/usr/lib/oracle/11.1/client/lib</var>. Questa
      variabile non è necessaria se le librerie sono localizzate da un
      meccanismo di ricerca diverso, come
      con <var class="filename">ldconfig</var> o
      con <code class="literal">LD_PRELOAD</code>.</td>
     </tr>

     <tr>
      <td>NLS_LANG</td>
      <td>Questa è la variabile principale per l&#039;impostazione del set di
      caratteri e delle informazioni di globalizzazione utilizzate dalle librerie
      Oracle.</td>
     </tr>

     <tr>
      <td>ORA_SDTZ</td>
      <td>Imposta il fuso orario della sessione Oracle.</td>
     </tr>

     <tr>
      <td>TNS_ADMIN</td>
      <td>Contiene la directory in cui vengono conservati i file
      di configurazione di Oracle Net Services come <var class="filename">tnsnames.ora</var>
      e <var class="filename">sqlnet.ora</var>. Non necessario se
      la stringa di connessione <span class="function"><a href="function.oci-connect.php" class="function">oci_connect()</a></span> utilizza la
      sintassi di denominazione Easy Connect come
      <code class="literal">localhost/XE</code>. Non necessario se i file
      di configurazione di rete si trovano in una delle posizioni predefinite come
      <var class="filename">$ORACLE_HOME/network/admin </var>
      o <var class="filename">/etc</var>.</td>
     </tr>

    </tbody>
   
  </table>

   Le variabili di ambiente Oracle utilizzate meno di frequente includono
   <code class="literal">TWO_TASK</code>, <code class="literal">ORA_TZFILE</code> e le
   varie impostazioni di globalizzazione Oracle
   come le variabili <code class="literal">NLS*</code> e
   <code class="literal">ORA_NLS_*</code>.  
 </p>
</div>
<div class="section">
 <h2 class="title">Risoluzione dei problemi</h2>
 <p class="para">
  Il problema più comune con l&#039;installazione di OCI8 non è avere
  l&#039;ambiente Oracle impostato correttamente.  Questo in genere appare come
  problema usando <span class="function"><a href="function.oci-connect.php" class="function">oci_connect()</a></span>
  o <span class="function"><a href="function.oci-pconnect.php" class="function">oci_pconnect()</a></span>.  L&#039;errore potrebbe essere un errore PHP
  come <em>Call to undefined function
  oci_connect()</em>, un errore Oracle come ORA-12705 o persino
  un arresto anomalo di Apache.  Controllare i file di log di Apache per errori di avvio e
  vedere le sezioni precedenti per risolvere questo problema.
 </p>
 <p class="para">
  Mentre errori di rete come ORA-12154 o ORA-12514 indicano un problema
  di configurazione o denominazione di rete Oracle, la causa principale potrebbe essere dovuta al fatto che
  l&#039;ambiente PHP non è impostato correttamente e le librerie Oracle non
  sono in grado di individuare il file di configurazione
  <var class="filename">tnsnames.ora</var>.
 </p>
 <p class="para">
  Su Windows, avere più versioni di Oracle su una macchina
  può facilmente causare conflitti di libreria a meno che non si presti attenzione per assicurarsi
  che PHP utilizzi solo la versione corretta di Oracle.
 </p>
 <p class="para">
  Un&#039;utilità per esaminare quali librerie vengono cercate e caricate
  può aiutare a risolvere problemi di libreria mancanti o contrastanti, in particolare su
  Windows.
 </p>
 <blockquote class="note"><p><strong class="note">Nota</strong>: 
  <strong>Se il server web non si avvia o si arresta in modo anomalo
  all&#039;avvio</strong><br />
  <p class="para">
   Verificare che Apache sia collegato alla libreria pthread:
  </p>
  <p class="para">
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
# ldd /www/apache/bin/httpd
  libpthread.so.0 =&gt; /lib/libpthread.so.0 (0x4001c000)
  libm.so.6 =&gt; /lib/libm.so.6 (0x4002f000)
  libcrypt.so.1 =&gt; /lib/libcrypt.so.1 (0x4004c000)
  libdl.so.2 =&gt; /lib/libdl.so.2 (0x4007a000)
  libc.so.6 =&gt; /lib/libc.so.6 (0x4007e000)
  /lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x40000000)
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   Se libpthread non è elencato, reinstallare Apache:
  </p>
  <p class="para">
   <div class="informalexample">
    <div class="example-contents screen">
<div class="cdata"><pre>
# cd /usr/src/apache_1.3.xx
# make clean
# LIBS=-lpthread ./config.status
# make
# make install
</pre></div>
    </div>
   </div>
  </p>
  <p class="para">
   Si noti che su alcuni sistemi come UnixWare, è libthread
   invece di libpthread. PHP e Apache devono essere configurati con
   EXTRA_LIBS=-lthread.
  </p>
 </p></blockquote>
</div>


</div><?php manual_footer($setup); ?>