oci_connect échec de la connexion
Je vais avoir de sérieux problème de connexion externe ORA DB 11g de locaux Zend server CE.
OCI8 est activé et en cours d'exécution de la version 1.4.6 (en raison de phpinfo()
).
J'ai essayé de nombreuses options de connexion (ci-dessous) avec le même message d'erreur retourné:
oci_connect(): ORA-28547: connection to server failed, probable Oracle Net admin error
Après googler pour toute la journée je suis seulement en mesure de dire que cette erreur signifie que PHP a été en mesure de communiquer avec le serveur, mais a été incapable de se connecter à un service concret/base de données et que l'erreur ne vient pas de PHP lui-même...
J'ai définissez la variable d'environnement TNS_ADMIN
à c:\oracle_instantclient_11_2
où le fichier tnsnames.ora
est situé contenant cette description de la connexion:
MYDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = X.X.X.X)(PORT = 1521))
)
(CONNECT_DATA = (SID = MYDB)(SERVER = DEDICATED))
)
À l'aide de cette description comme
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=X.X.X.X)(PORT=1521)))(CONNECT_DATA=(SID=MYDB)(SERVER=DEDICATED)))
Je suis en mesure de vous connecter au serveur et à la base de données avec sqlplus
console, donc la connexion est très à droite. Je suis également en utilisant le même HÔTE, le PORT et SID pour se connecter au serveur avec Sqldeveloper
outil. Le problème est lors de la connexion au serveur dans un PHP...
Ce que j'ai essayé jusqu'à présent:
oci_connect("user", "password", "X.X.X.X:1521", "AL32UTF8", 0);
oci_connect("user", "password", "MYDB", "AL32UTF8", 0);
oci_connect("user", "password", "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=X.X.X.X)(PORT=1521)))(CONNECT_DATA=(SID=MYDB)(SERVER=DEDICATED)))", "AL32UTF8", 0);
Tous ces oci_connect
appels au-dessus de renvoyer le même message d'erreur mentionné.
J'avais aussi essayé le ezconnect
moyen pour 11g comme indiqué ici - [//]host_name[:port][/service_name][:server_type][/instance_name]
:
oci_connect("user", "password", "X.X.X.X:1521/MYDB", "AL32UTF8", 0);
mais le problème est que je ne sais pas le service name
, seul le service ID
(SID
), donc l'erreur renvoyée est: est-ce
oci_connect(): ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
qui dit qu'il n'y a pas de service en cours d'exécution avec le nom du service fourni (ou que l'ORA, l'auditeur ne sait pas ce service).
Version de PHP: 5.3.14
Appache v.: 2.2.22 (32 bits) Zend
Zend server CE: 5.3.6
PHP info pour OCI8:
OCI8 Support enabled
Version 1.4.6
Revision $Revision: 313688 $
Active Persistent Connections 0
Active Connections 0
Oracle Instant Client Version Unknown
Temporary Lob support enabled
Collections support enabled
Directive Local Value Master Value
oci8.connection_class no value no value
oci8.default_prefetch 100 100
oci8.events Off Off
oci8.max_persistent -1 -1
oci8.old_oci_close_semantics Off Off
oci8.persistent_timeout -1 -1
oci8.ping_interval 60 60
oci8.privileged_connect Off Off
oci8.statement_cache_size 20 20
Peut-être le problème est qu'il est unknown
version de Oracle instant client
si c'est chemin d'accès est défini au sein de la TNS_ADMIN
et PATH
variables d'environnement...
Ma question est: quelqu'un sait de quoi ai-je fait de mal? Ai-je raté quelque chose? J'ai googlé pour une journée entière hier donc probablement (avec 99% de chance) google liens que Vous voudriez me fournir, je l'ai déjà vu et essayé...
Bien que cette question pourrait être considéré comme une copie exacte de celui-ci - il n'a pas encore été répondu et je suppose que personne ne va revenir à cette vieille question, même si je poste un commentaire, je vais avoir des problèmes de connexion trop. Aussi garder à l'esprit que, dans cette question similaire, un autre message d'erreur est retourné et a demandé à propos.
Vous devez vous connecter pour publier un commentaire.
En raison de plusieurs erreurs de configuration et de 3 jours perdus en cherchant une solution, j'ai déménagé à développer sur un serveur Linux et tous les problèmes ont disparu.
Ce que j'ai trouvé:
php_oci8.dll
etphp_oci8_11g.dll
sont en fonction du Client Oracle Instant bibliothèquesoci_
fonctions (commeoci_connect
), seulementociX
fonctions (commeociLogon
) qui est étrange...ORA_HOME
,TNS_ADMIN
, ajustéPATH
de regarder à l'instant de l'installation du client) en vainDonc finalement sur serveur Linux je n'ai pas de problèmes de connexion à distance du serveur Oracle. Quelque part (tout en surfant sur des milliers de PHP-Oracle pages connexes), j'ai trouvé une information qui "il ne faut pas développer une application PHP connexion à un serveur Oracle sous windows" et devrait s'en tenir au système UNIX à la place...
Donc personne connaît similaires ou de même des problèmes d' - être si gentil et ne perdez pas Votre temps, installer une VirtualBox, tourner Linux sur elle et aller de l'avant!
pour connecter php pour Oracle 11g version 11.2, vous devez effectuer les opérations suivantes;
Étape 1:
connexion pour vous db avec sys en tant que sysdba et d'exécuter des scripts suivants.
**
**
Étape 2:
en vous script PHP
**
**
Remarque: j'). Assurez-vous que PHP_OCI8 et PHP_OCI8_11g efforts sont activés
ii). Oracle 11 est sensible à la casse.
Cordialement
Yasser Hashmi
WAMP
ou manuellement installé le serveur Apache?J'ai eu le même problème et a essayé de se connecter à partir de mon ordinateur local vers un serveur distant.
après 2 semaines de tring-j'ai finalement réussi à le faire fonctionner.
la solution est très simple, mais non documentée dans la documentation de PHP
donc, nous allons prendre l'exemple de PHP fournie:
$conn = oci_connect('hr', 'accueil', 'localhost/XE');
ce qu'ils ne mentionnent pas, c'est qu'il pointe vers le port par défaut sur le serveur.
si le vôtre est mis en place pour une autre, vous devez le spécifier.
voir le nouvel exemple ci-dessous:
$conn = oci_connect('hr', 'accueil', 'localhost:1234/XE');
essayer avec votre port spécifié.
Espère que cette aide
1521
ports 😉 de toute façon, Si Vous allez par le biais de ma question, Vous constaterez que j'ai déjà essayé ceci:oci_connect("user", "password", "X.X.X.X:1521", "AL32UTF8", 0);
- Et peut-être par la recherche avant que Vous avez perdu Votre 2 semaines, Vous allez trouver ma question et peut-être que Vous essayez ce que j'ai essayé et cela pourrait peut-être Vous aider 😉Juste ajouter mon grain de sel, que je me suis Cogné la tête contre le mur avec celui-ci... Si tout le reste échoue, essayez cela, une Fois que vous avez téléchargé le client instant, http://www.oracle.com/technetwork/topics/winsoft-085727.html, copiez son contenu extrait de l'apache/bin. Il va probablement vous demander de plus-écrire l'oci.dll. Faire, puis redémarrez apache/php. Avec de la chance cela permettra de résoudre le problème...
Bonne chance.
Ma solution sur fedora 17: