oci8 - oracle elérés php-ből
A problémáva küzdök jóideje, utánaolvastam sok helyen de megakadtam. Habár van több megoldás is sajnos nálam nem működött.
A dott egy Linuxos szerver (Ubuntu Feisty) 5-ös php-val. Telepítettem az oci8 (oracle instantclient-el) kiterjesztést ami szépen megjelenik a phpinfo()-ban.
A Linuxon lévő php az oracle szerverhez kapcsolodik. Az oracle szerveren be lett állítva, hogy az adott ip-röl lehessen vele dolgozni.
Létrehoztam egy network/admin könyvtárat, valamint elkészítettem egy tnsnames.ora fájlt, abba a megfelelő dolgokat.
Akörnyezeti változók beállításának hiánya miatt, a kódban heyleztem el a szükséges adatokat, és a biztonság kedvéért, a kódban is próbaltam buherálni velük.A környezeti változók beállításával lehet a gond szerintem, de sehogy nem tudok megküzdeni a problémával.
Érzem, hogy itt már valamit nagyon összegányoltam, ugyhogy kérem aki tud segíteni az mentsen meg.
Előre is köszönöm!
■ A dott egy Linuxos szerver (Ubuntu Feisty) 5-ös php-val. Telepítettem az oci8 (oracle instantclient-el) kiterjesztést ami szépen megjelenik a phpinfo()-ban.
A Linuxon lévő php az oracle szerverhez kapcsolodik. Az oracle szerveren be lett állítva, hogy az adott ip-röl lehessen vele dolgozni.
Létrehoztam egy network/admin könyvtárat, valamint elkészítettem egy tnsnames.ora fájlt, abba a megfelelő dolgokat.
neptunora =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=host.hu)(PORT = 1521))
)
(CONNECT_DATA =
(SID=NEPTUN)
)
)
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=host.hu)(PORT = 1521))
)
(CONNECT_DATA =
(SID=NEPTUN)
)
)
Akörnyezeti változók beállításának hiánya miatt, a kódban heyleztem el a szükséges adatokat, és a biztonság kedvéért, a kódban is próbaltam buherálni velük.
<?php
putenv("ORACLE_SID=NEPTUN");
putenv("ORACLE_HOME=/opt/oracle/instantclient");
putenv("TNS_ADMIN=/opt/oracle/network/admin");
$db="(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=host.hu)(PORT=1521))
)
(CONNECT_DATA=(SID=NEPTUN))
)";
if ($c=OCILogon("user", "password", $db)) {
echo "Kapcsolodas sikeres.\n";
ocilogoff($c);
} else {
$err = ocierror();
echo "Oracle kapcsolodasi hiba" . $err[text];
}
?>
Warning: ocilogon() [function.ocilogon]: ORA-12560: TNS:protocol adapter error
Érzem, hogy itt már valamit nagyon összegányoltam, ugyhogy kérem aki tud segíteni az mentsen meg.
Előre is köszönöm!
nálam
LoadModule setenvif_module /usr/lib/apache2/modules/mod_setenvif.so
ja és én a Zend Core 2.0-t használom php engine-nek...
Azt is megpróbálnám, hogy a $db-nek a neptunora-t adod meg:
A SID-et kell megadni
Oracle környezeti változók
Üdv,
Felhő
más hibakód
A szkripten belül getenv()-el kiírja szépen a megadott értékeket. Mivel távoli elérés van szükségem van a tnsnames.ora fájlra, aminek az elérését szintén beállítottam (tnsnames.ora végződés nélkül /opt/oracle/network/admin).
Kipróbáltam a $db változót üresen hagyni, megadni benne a SID-et valamint megadni benne a tnsnames.ora fájlban megadott neptunora-t is. Sajnos egyikkel sem működött.
Jelenlegi állapot:
SetEnv ORACLE_SID NEPTUN
SetEnv NLS_LANG HUNGARIAN_HUNGARY.EE8ISO8859P2
SetEnv TNS_ADMIN /opt/oracle/network/admin
tnsnames.ora
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST=host.hu)(PORT = 1521))
)
(CONNECT_DATA =
(SID=NEPTUN)
)
)
hiba változott:
melyiket használjam az ocilogon()-t vagy az oci_connect()-et? (egyikkel sem működött)
így próbáltad már?
database_name
Elnézést tárgytalan....
megoldás
A gond az volt, hogy a host nem ip címmel lett megadva.... nem hiszem el, nem is mondom, hogy mennyit szívtam vele.