Se si vuole realizzare una procedura in Php che recuperi o che scriva dei dati da un database Oracle e la si vuole provare in locale con Xampp, è necessario assicurarsi che sul sistema ci siano le librerie e le configurazioni giuste. Vediamo come si fa.
Ingredienti
- Sistema operativo: Windows 10 (versione Home o Professional)
- Editor: Visual Studio Code (v. 1.61.2)
- Ambiente di sviluppo: XAMPP (v. 3.3.0)
- Server Oracle funzionante e configurato con credenziali note:
- username (es. ‘dbusername)’,
- password (es. ‘dbpassword)’,
- stringa di connessione (es. ‘dbhost:dbport/servicename‘).
- Libreria Oracle instant client (21.6)
- Libreria Pecl-OCI (8_12c)
Preparazione
Si suppone che sul sistema locale sia installato Xampp, che si conosca la sua directory base, per esempio C:\xampp\htdocs, e che si abbiano le credenziali di accesso a un server Oracle.
A questo punto:
- Lanciare Xampp e avviare i servizi Apache e Mysql usando il Pannello di Controllo (Pdc).
- Creare la cartella C:\xampp\htdocs\test-oracle in modo che contenga i seguenti file: testPhpConf.php e testConnessione.php il cui contenuto sarà rispettivamente:
- testPhpConf.php: Pagina per vedere le configurazioni di PHP
<?php
echo phpinfo();
?>
- testConnessione.php: Pagina per provare la connessione ad Oracle
<?php
$conn = oci_connect('dbusername', 'dbpassword', 'dbhost:dbport/servicename');
$query = 'select table_name from user_tables';
$stid = oci_parse($conn, $query);
oci_execute($stid, OCI_DEFAULT);
while ($row = oci_fetch_array($stid, OCI_ASSOC)) {
foreach ($row as $item) {
echo $item." | ";
}
echo "\n";
}
oci_free_statement($stid);
oci_close($conn);
echo'FINITO';
?>
- testPhpConf.php: Pagina per vedere le configurazioni di PHP
- Aprire con un browser le seguenti url:
- http://localhost/test-oracle/testPhpConf.php: verificando che l’estensione oci8 non compaia tra quelle installate.
- http://localhost/test-oracle/testConnessione.php: verificando che lo script dia errore dato sulla chiamata oci_connect().
- Scaricare dal sito di Oracle [1] il file zip contenente la libreria Instant Client per Windows x64. Può andare bene la versione più recente con nome “Basic Package” (ad oggi l’ultima è la 21.6).
- Scompattare lo zip e copiarlo in C:\ in modo che alla fine il percorso per raggiungere i file sia, per esempio, C:\instantclient_21_6.
- Modificare le variabili d’ambiente di Windows (Start->Pannello di Controllo->Sistema e sicurezza->Sistema->Impostazioni di sistema avanzate->Avanzate->Variabili d’ambiente->Variabili di sistema) in modo tale che nel PATH ci sia il percorso: C:\instantclient_21_6
- Verificare che nella cartella C:\xampp\php\ext ci sia una versione della libreria php_oci8, per esempio php_oci8_12c.dll. Se presente va bene, se assente allora:
- Scaricare dal repository per le estensioni di PHP chiamato PECL la libreria php_oci8 più adatta alla versione di PHP che si sta usando. La versione di PHP in uso si vede dall’output visualizzato dal link 3a). La versione della libreria da scaricare è indicata in questa pagina. Per esempio, poiché la mia versione di php è la 7.4 la versione della libreria da utilizzare è la oci8-2.2.0.
- Cliccare quindi sul link DLL in corrispondenza della versione desiderata.
- Aprire il file di configurazione di PHP (php.ini) dal PdC di Xampp:
- Cercare la riga in cui è dichiarata l’estensione oci8_12 e scommentarla togliendo, se presente, il carattere ‘;’ all’inizio della riga. Se la riga non è presente in tutto il file, allora aggiungerla nella sezione del file dove sono dichiarate le estensioni da caricare.
- Riavviare il servizio Apache dal Pdc di Xampp (stop e start).
- Visualizzare di nuovo le seguenti pagine:
- http://localhost/test-oracle/testPhpConf.php: verificando che tra le estensioni installate e attivate ora c’è anche oci8.
- http://localhost/test-oracle/testConnessione.php: E verificare che lo script effettua la query e mostra il risultato della query come output. In questo caso particolare l’utente che ho usato non ha i diritti per visualizzare il cotentuto della tabella user_tables, ma l’output mostra che non ci sono stati errori nell’interrogazione del db. In altri casi, perima della stringa FINITO potrebbe esserci un elenco di nomi tabelle.
Fonti e riferimenti
- [1] Oracle Instant Client Downloads for Microsoft Windows (x64) 64-bit
- [2] PECL – oci8 packages
- [3] Activate Oracle on XAMPP for Windows : OCI8 di Jaswant Tak
- [4] PHP and Oracle Using XAMPP on Windows 10 di Dhiraj Kumar Jha
Posted In: Informatica
Tagged In: xampp