Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Compilare il driver PDO e connettersi ad un DB Oracle con PHP5 da Linux ====== {{http://php.net/images/php.gif }} Con questa guida descriveremo i passi necessari per connettersi da una macchina Linux, ad un DB Oracle con PHP5 utilizzando PDO (PHP Data Objects). ===== Installiamo il Client Oracle ===== Cosa fondamentale per connettersi ad Oracle è necessario avere un //Client// o in alternativa l'//Instant Client//. Per installare l'//Instant Client// è possibile seguire la guida [[how-to:instant-client-oracle-on-linux]]. ===== Compiliamo il driver PDO per DB Oracle ===== Scarichiamo dal sito php.net i sorgenti di PHP5 con la stessa versione in uso sul nostro sistema (nell'esempio la versione 5.4.30), copiamo il pacchetto nella directory ''/tmp'' (o un'altra a nostra scelta) e lo stariamo ((scompattiamo il tar)): $ cp php-5.4.30.tar.xz /tmp $ cd /tmp $ tar xvvf php-5.4.30.tar.xz Adesso spostiamoci nella directory contente i sorgenti del driver PDO per DB Oracle: $ cd php-5.4.30/ext/pdo_oci/ Lanciamo il comando ''phpize'' per preparare l'ambiente alla compilazione del driver: $ phpize Adesso passiamo al ''configure'' il parametro ''--with-pdo-oci=DIR'' dove ''DIR'' è la directory dove si trova il //Client// o //Instant Client// Oracle: Nel caso abbiamo settato la variabile ''$ORACLE_HOME'': $ ./configure --with-pdo-oci=$ORACLE_HOME Altrimenti specifichiamo il path dell'//Instant Client// con questa sintassi ''--with-pdo-oci=instantclient,<path-instant-client>,<versione-instant-client>'', ad esempio: $ ./configure --with-pdo-oci=instantclient,/opt/oracle/client/11.2,11.2 Se non abbiamo avuto errori possiamo lanciare la compilazione vera e propria: $ make Al termine della compilazione avremo a disposizione il modulo compilato nella directory ''modules''. A questo punto con l'utente ''root'', copiamo il modulo ''php_oci.so'' nella directory dei moduli di PHP: # cp modules/php_oci.so /usr/lib64/php/extensions <div round tip 90% center> La posizione della directory dei moduli di PHP varia da distribuzione a distribuzione Linux. Per trovare quella in uso nella propria distribuzione Linux possiamo lanciare il seguente comando: $ php-config --extension-dir </div> ===== Configuriamo PHP5 ===== Prima di poter utilizzare nei nostri script PHP5 il driver OCI appena compilato, dobbiamo caricarlo. Da ''root'' con il nostro editor di testo preferito apriamo il file ''php.ini'', ed aggiungiamo alla sezione //Dynamic Extensions// il driver: extension=pdo_oci.so salviamo il file ''php.ini'' e riavviamo //Apache HTTP Server//: # apachectl restart <div tip round 90% center> Il comando di stop & start di //Apache HTTP Server// può variare da distribuzione a distribuzione. Il modo più semplice è utilizzare il comando ''apachectl'' fornito dal pacchetto di //Apache HTTP Server//, altrimenti siamo liberi di utilizzare il comando ufficiale fornito con la propria distribuzione, ad esempio: **RedHat (e derivate)** # service httpd restart **Slackware Linux** # sh /etc/rc.d/rc.httpd restart **Debian (e derivate)** # sh /etc/init.d/apache2 restart </div> Adesso che abbiamo caricato il modulo vediamo se è stato caricato correttamente grazie alla nostra immancabile pagina //info.php// che richiama la funzione ''phpinfo()''. <file .php info.php> <?php phpinfo(); </file> <div tip round 90% center> Possiamo vedere velocemente anche da riga di comando tutti i moduli installati lanciando il seguente comando: $ php -m </div> ===== Utilizziamo la classe PDO ===== Adesso possiamo utilizzare la classe PDO per connettersi al nostro DB Oracle. <code .php> try { // Se stiamo usando l'entry nel tnsnames.ora // possiamo specificare l'istanza Oracle $PDO = new PDO("oci:dbname=orcl", $username, $password); // Se stiamo usando l'instant client possiamo // specificare la macchina, porta e istanza Oracle $PDO = new PDO("oci:dbname=//localhost:1521/orcl", $username, $password); $dbh = $PDO->prepare("SELECT sysdate AS date FROM dual"); $sth = $dbh->execute(); if ($row = $sth->fetch(PDO::FETCH_ASSOC)) { var_dump($row["date"]); } } catch(PDOException $e) { var_dump($e->getMessage()); } </code> ===== Link utili ===== * [[how-to:instant-client-oracle-on-linux]] * [[http://php.net/manual/en/ref.pdo-oci.php|PHP.net - PDO OCI Driver]] * [[http://php.net/manual/en/ref.pdo-oci.connection.php|PHP.net - PDO OCI DNS]] {{tag>how-to linux php pdo oracle}} how-to/php-and-oracle-with-pdo-oci.txt Last modified: 8 years agoby Giuseppe Di Terlizzi Log In