Connexion à une base de données Oracle à partir du PHP
gilou106
Messages postés
52
Date d'inscription
Statut
Membre
Dernière intervention
-
gilou106 Messages postés 52 Date d'inscription Statut Membre Dernière intervention -
gilou106 Messages postés 52 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Comme indique le titre du sujet, je cherche à savoir comment me connecter à une base de données Oracle à partir d'un script PHP, sachant que la base de données se trouve dans un autre serveur (je travaille dans une mairie).
J'ai déjà essayé d'activer l'extention php_oci8.dll et aussi php_oci8_11g.dll (j'ai oracle 11 installé), les fonctions "oci_connect()", par exemple, n'est pas détecté comme inconnu mais il m'affiche tout le temps les 2 erreurs :
- OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries in ...
- ORA-12735: Instant Client Light: unsupported client character set NA in ...
J'ai cherché le moyen de réparer la première erreur mais je n'arrive pas et je trouve pas assez d'informations.
J'utilise la plateforme Wampserver 2.2:
-Apache 2.2.22
-PHP 5.3.13
-MySQL 5.5.24
Merci de votre aide ^^
Comme indique le titre du sujet, je cherche à savoir comment me connecter à une base de données Oracle à partir d'un script PHP, sachant que la base de données se trouve dans un autre serveur (je travaille dans une mairie).
J'ai déjà essayé d'activer l'extention php_oci8.dll et aussi php_oci8_11g.dll (j'ai oracle 11 installé), les fonctions "oci_connect()", par exemple, n'est pas détecté comme inconnu mais il m'affiche tout le temps les 2 erreurs :
- OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries in ...
- ORA-12735: Instant Client Light: unsupported client character set NA in ...
J'ai cherché le moyen de réparer la première erreur mais je n'arrive pas et je trouve pas assez d'informations.
J'utilise la plateforme Wampserver 2.2:
-Apache 2.2.22
-PHP 5.3.13
-MySQL 5.5.24
Merci de votre aide ^^
A voir également:
- Connexion à une base de données Oracle à partir du PHP
- Gmail connexion - Guide
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Base de registre - Guide
- Créer une vidéo à partir de photos - Guide
9 réponses
Bonjour,
Je ne pratique pas le php. Mais les messages semblent venir du client Oracle.
Tu as un Instant Client. Est-il bien paramétré, peux tu connecter à la base avec sqlplus ?
Car le répertoire utilisé ne semble pas présent dans le PATH windows, et tu as une version light qui ne prend en charge que le code page american/america.
cdlt
Je ne pratique pas le php. Mais les messages semblent venir du client Oracle.
Tu as un Instant Client. Est-il bien paramétré, peux tu connecter à la base avec sqlplus ?
Car le répertoire utilisé ne semble pas présent dans le PATH windows, et tu as une version light qui ne prend en charge que le code page american/america.
cdlt
Bonjour,
oui j'ai un Instant Client. C'est le service Informatique qui l'a installé et je comprend pas trop à sa, c'est une peu du reseau je trouve pour moi alors que je suis développeur. J'ai déjà régardé sur "tnsping monBDD" pour voir le chemin du PATH mais je l'ai déjà mis dans les variables de l'environnement Windows et aussi dans l'environnement Apache, mais l'erreur persiste ..
Comment fait on pour se connecter avec SQLplus ?
oui j'ai un Instant Client. C'est le service Informatique qui l'a installé et je comprend pas trop à sa, c'est une peu du reseau je trouve pour moi alors que je suis développeur. J'ai déjà régardé sur "tnsping monBDD" pour voir le chemin du PATH mais je l'ai déjà mis dans les variables de l'environnement Windows et aussi dans l'environnement Apache, mais l'erreur persiste ..
Comment fait on pour se connecter avec SQLplus ?
Tout simplement tu lances une fenêtre invite de commande et tu tapes :
sqlplus compte/motdepasse@ORASIDDETABASE
ex : sqlplus finance/finance@BASEFI
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
sqlplus compte/motdepasse@ORASIDDETABASE
ex : sqlplus finance/finance@BASEFI
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
L'erreur : ORA-12735: Instant Client Light: unsupported client character set
semble indiquer que c'est un pb de character set, peut être du à la version light.
il existe une version plus complète, la basic alors que tu as peut être la basic lite : https://www.oracle.com/database/technologies/instant-client/microsoft-windows-32-downloads.html
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
semble indiquer que c'est un pb de character set, peut être du à la version light.
il existe une version plus complète, la basic alors que tu as peut être la basic lite : https://www.oracle.com/database/technologies/instant-client/microsoft-windows-32-downloads.html
Un étranger, c'est un ami qu'on n'a pas encore rencontré.
Bonjour,
La version installée est bien le pack complet. :/
Je suis entrain d'essayer meme avec PDO sous les deux formats que je connaisse:
- le premier avec "oci:dbname=".PdoOra::$bdd.";host=".PdoOra::$host.":".PdoOra::$port".
Il arrete les services d'Apache
- le deuxième avec
"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=".PdoOra::$host.")(Port = ".PdoOra::$port.")))(CONNECT_DATA=(SID_NAME=".PdoOra::$bdd.")(SERVICE_NAME = ".PdoOra::$bdd.")))".
Il m'affiche l'erreur "Invalid data source name".
La version installée est bien le pack complet. :/
Je suis entrain d'essayer meme avec PDO sous les deux formats que je connaisse:
- le premier avec "oci:dbname=".PdoOra::$bdd.";host=".PdoOra::$host.":".PdoOra::$port".
Il arrete les services d'Apache
- le deuxième avec
"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=".PdoOra::$host.")(Port = ".PdoOra::$port.")))(CONNECT_DATA=(SID_NAME=".PdoOra::$bdd.")(SERVICE_NAME = ".PdoOra::$bdd.")))".
Il m'affiche l'erreur "Invalid data source name".
J'ai effectué des tests pour voir comment cela fonctionne. AVec 2 VM (la base et le client Oracle) et XAMPP en serveur Web.
J'arrive bien à me connecter avec les syntaxes suivantes :
Connexions avec le TNS
ou
Connexion avec la chaine complète
Pour l'anomalie sur le character set, il faudrait le rajouter
J'ai utilisé les infos de ce site : https://www.php.net/manual/en/function.oci-connect.php
Pour Oracle11 (j'ai testé avec une base en Oracle10) il est mentionné une chaine de connexion plus étendue :
//host_name[:port]/service_name[:server_type]/instance_name.
J'arrive bien à me connecter avec les syntaxes suivantes :
Connexions avec le TNS
$connect = ocilogon("FI","FI","ORA10");
ou
$conn = oci_connect('fi', 'fi', 'ORA10'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); }
Connexion avec la chaine complète
$conn = oci_connect('fi', 'fi', '//192.168.0.9:1521/ORA10'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); }
Pour l'anomalie sur le character set, il faudrait le rajouter
oci_connect('fi', 'fi', '//192.168.0.9:1521/ORA10' , 'WE8ISO8859P1');Car quand il y a une mauvaise valeur, il y a le même message d'erreur que toi.
J'ai utilisé les infos de ce site : https://www.php.net/manual/en/function.oci-connect.php
Pour Oracle11 (j'ai testé avec une base en Oracle10) il est mentionné une chaine de connexion plus étendue :
//host_name[:port]/service_name[:server_type]/instance_name.
Les deux erreurs sont toujours là :/
Exemple du code que j'ai fait :
$user = '...';
$mdp = '...';
$lien = '//(hote):(port)/(nom service)';
$conn = oci_connect($user, $mdp, $lien, 'WE8ISO8859P1');
$e = oci_error();
var_dump($conn); // Sur la page, il m'affiche la valeur FALSE
var_dump(htmlentities($e['message'])); // Il affiche juste les cotes ''
j'ai essayé aussi avec ocilogon() mais c'est pareil et le site php.net déconseille cette fonction.
Dieu d'oracle et de php ! Aide-moi !!!
Exemple du code que j'ai fait :
$user = '...';
$mdp = '...';
$lien = '//(hote):(port)/(nom service)';
$conn = oci_connect($user, $mdp, $lien, 'WE8ISO8859P1');
$e = oci_error();
var_dump($conn); // Sur la page, il m'affiche la valeur FALSE
var_dump(htmlentities($e['message'])); // Il affiche juste les cotes ''
j'ai essayé aussi avec ocilogon() mais c'est pareil et le site php.net déconseille cette fonction.
Dieu d'oracle et de php ! Aide-moi !!!