Oracle i PHP - błąd podłączenie do bazy.

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
kacperek29
Piegowaty Guziec
Piegowaty Guziec
Posty: 20
Rejestracja: 17 gru 2007, 17:31
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Oracle i PHP - błąd podłączenie do bazy.

Post autor: kacperek29 »

Próbuje podłączyć się do zdalnej bazy oracle 10g XE znajdującej się na serwerze. Mam zainstalowany client oracle i na tym komputerze pracuje aplikacja korzystająca z bazy oracle.

<?
$db = "(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = adres_IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)";

if ($c = @oci_connect("login","hasło","$db"))
{
echo "Udane połączenie z bazą danych Oracle.
";
oci_close($c);
}
else
{
$errorMessage = oci_error();
print '<table border="1" cellpadding="0" cellspacing="0">';
foreach ($errorMessage as $name => $value)
print '<tr><td>'.$name.'</td><td>'.$value.'</td></tr>';
print '</table>';
}

?>
Otrzymuje komunikat: ORA-06413: Connection not open
Gdzie tutaj jest błąd?
Awatar użytkownika
valdi74
Wytworny Kaczor
Wytworny Kaczor
Posty: 441
Rejestracja: 01 maja 2007, 12:58
Płeć: Mężczyzna
Wersja Ubuntu: 24.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Poznań

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: valdi74 »

Nie znam się na PHP, ale może coś pomogę od strony Oracle. Rozumiem, że opis połączenia (bazy) przykleiłeś z tnsnames.ora i ta działająca aplikacja się po tym łączy? Jeśli klient Oracle jest zainstalowany to możesz się upewnić za pomocą tnsping <nazwabazy>, czy połączenie działa.
Zainstalowałeś OCI? Jeśli nie, to poniżej masz 2 instrukcje. Pracujesz na 7.10?
http://www.acloudtree.com/?tag=php-php5 ... 0g-9-8-710
http://techxplorer.com/2008/09/22/insta ... u-804-810/
Qui vit sans folie, n'est pas si sage qu'on croit
kacperek29
Piegowaty Guziec
Piegowaty Guziec
Posty: 20
Rejestracja: 17 gru 2007, 17:31
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: kacperek29 »

Już tłumaczę dokładniej.
Oracle w wersji 10g XE na serwerze Fedora.
Na komputerze z którego próbuje się podłączyć jest zainstalowany Windows XP i Oracle XEClient.
Zainstalowałem dodatkowo WebServ, apache 2.2.6, php 5.2.5. W php.ini mam włączone extension=php_oci8.dll.
tnsnames.ora :
WSZON =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.203)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)
Z poziomu tego komputera łącze się z bazą danych za pomogą SQLPLus, Toad for Oracle Freeware oraz pewnej aplikacji.

Skorzystałem z narzędzie oraspy, tam jest tnsping.
Please enter a valid Oracle SID or Service Name.
Wpisałem nazwę XE i otrzymałem komunikat:
Nie można odnaleźć określonego pliku.
Nie można odnaleźć określonego pliku.
PS. Wiem, że to forum Ubuntu ale w sumie Fedora to też linux :)
Awatar użytkownika
valdi74
Wytworny Kaczor
Wytworny Kaczor
Posty: 441
Rejestracja: 01 maja 2007, 12:58
Płeć: Mężczyzna
Wersja Ubuntu: 24.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Poznań

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: valdi74 »

spróbuj tak:

Kod: Zaznacz cały

tnsping WSZON
ewentualnie WSZON.WORLD (w zależności od tego na co masz ustawione NAMES.DEFAULT_DOMAIN w lokalnym sqlnet.ora, wklej najlepiej jego zawartość).
Uściślając - na XP masz aplikację, która łączy się poprawnie to bazy WSZON?
Qui vit sans folie, n'est pas si sage qu'on croit
kacperek29
Piegowaty Guziec
Piegowaty Guziec
Posty: 20
Rejestracja: 17 gru 2007, 17:31
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: kacperek29 »

Nie mam lokalnego pliku sqlnet.ora
Próbowałem
tnsping wszon i wszon.world
Ten sam efekt
Nie można odnaleźć określonego pliku.
Nie można odnaleźć określonego pliku.
W narzędziu oraspy włączyłem sobie monitoring i otrzymuje komunikat
[xe] Database wszon is running fine
Tak na tym komputerze (z XP) mam aplikację, która łączy się bez problemów z bazą WSZON.
Awatar użytkownika
valdi74
Wytworny Kaczor
Wytworny Kaczor
Posty: 441
Rejestracja: 01 maja 2007, 12:58
Płeć: Mężczyzna
Wersja Ubuntu: 24.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Poznań

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: valdi74 »

Poszukaj tego tnsping.exe, powinien być gdzieś w katalogu w którym instalowałeś klienta Oracle (pewnie w katalogu bin).
A ta lokalna aplikacja w jaki sposób się łączy do bazy? Podajesz jej przy logowaniu użytkownika, hasło i nazwę bazy WSZON czy jakoś inaczej?
Czy jak wykonasz

Kod: Zaznacz cały

<?php phpinfo(); ?>
to widać włączone OCI8?

Spróbuj jeszcze łączyć się tak:

Kod: Zaznacz cały

oci_connect("login","hasło","//192.168.1.203:1521/XE")
Masz włączone

Kod: Zaznacz cały

extension=php_oracle.dll
?

I jeszcze coś mi podpadło. Jak już wspomniałem, na PHP się nie znam, ale czy zamiast

Kod: Zaznacz cały

oci_connect("login","hasło","$db")
nie powinno być

Kod: Zaznacz cały

oci_connect("login","hasło",$db)
?
Qui vit sans folie, n'est pas si sage qu'on croit
kacperek29
Piegowaty Guziec
Piegowaty Guziec
Posty: 20
Rejestracja: 17 gru 2007, 17:31
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: kacperek29 »

valdi74 pisze:Poszukaj tego tnsping.exe, powinien być gdzieś w katalogu w którym instalowałeś klienta Oracle (pewnie w katalogu bin).
Przeszukałem i nie mam.
valdi74 pisze: A ta lokalna aplikacja w jaki sposób się łączy do bazy? Podajesz jej przy logowaniu użytkownika, hasło i nazwę bazy WSZON czy jakoś inaczej?
Dokładnie tak jak napisałeś. Nazwa bazy: WSZON, login i hasło.
valdi74 pisze: Czy jak wykonasz

Kod: Zaznacz cały

<?php phpinfo(); ?>
to widać włączone OCI8?
Tak widać. Bez oci8 nie zwraca żadnych wyników.
valdi74 pisze: Spróbuj jeszcze łączyć się tak:

Kod: Zaznacz cały

oci_connect("login","hasło","//192.168.1.203:1521/XE")
Efekt:

Kod: Zaznacz cały

Warning: oci_connect() [function.oci-connect]: ORA-06413: Connection not open. in D:\WebServ\httpd\index.php on line 2
valdi74 pisze: Masz włączone

Kod: Zaznacz cały

extension=php_oracle.dll
?
Nie miałem ale już włączyłem. Efekt ten sam.
valdi74 pisze: I jeszcze coś mi podpadło. Jak już wspomniałem, na PHP się nie znam, ale czy zamiast

Kod: Zaznacz cały

oci_connect("login","hasło","$db")
nie powinno być

Kod: Zaznacz cały

oci_connect("login","hasło",$db)
?
Nie zmienia to niczego.
Awatar użytkownika
valdi74
Wytworny Kaczor
Wytworny Kaczor
Posty: 441
Rejestracja: 01 maja 2007, 12:58
Płeć: Mężczyzna
Wersja Ubuntu: 24.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Poznań

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: valdi74 »

Skoro aplikacja się łączy, to jakby od strony sieci i Oracle było OK (listener stoi, porty otwarte, itp.). Możesz jeszcze spróbować zainstalować normalnego klienta 10g a nie XE stąd: http://www.oracle.com/technology/softwa ... nsoft.html. Ale jakoś nie jestem przekonany czy to pomoże. Stawiam na jakiś problem po stronie konfiguracji PHP, może gdzieś jakiejś ścieżki brakuje do katalogów z bibliotekami Oracle...
Qui vit sans folie, n'est pas si sage qu'on croit
Awatar użytkownika
leon1313
Zakręcona Traszka
Zakręcona Traszka
Posty: 668
Rejestracja: 02 sty 2006, 19:35
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: KDE Plasma
Architektura: x86

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: leon1313 »

Nie wiem, jak jest pod windą, ale pod linuchem połączenie do Oracle z poziomu PHP wymaga ustawienia dwóch zmiennych środowiskowych, tu z przykładowymi ścieżkami:

Kod: Zaznacz cały

PutEnv("ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client");
PutEnv("TNS_ADMIN=/opt/oracle/tns");
"Poza tym dostałeś PLONKa i zabraniam Ci pisać na te grupe!!! Powiedziałem PLONK i sie zamknij i nawet nie knuj rzeby mi odpisywać! Zabraniam!!!"
kacperek29
Piegowaty Guziec
Piegowaty Guziec
Posty: 20
Rejestracja: 17 gru 2007, 17:31
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: kacperek29 »

leon1313 dzięki za podpowiedź. Serwer jest na linuxie, a apache i php na Windows.
Zastanawiam się w takim razie jak ustawić i do czego ścieżki. Ale to już jakiś krok naprzód.
Awatar użytkownika
valdi74
Wytworny Kaczor
Wytworny Kaczor
Posty: 441
Rejestracja: 01 maja 2007, 12:58
Płeć: Mężczyzna
Wersja Ubuntu: 24.04
Środowisko graficzne: KDE Plasma
Architektura: x86_64
Lokalizacja: Poznań

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: valdi74 »

ORACLE_HOME to by było warto ustawić. Poszukaj w rejestrze w gałęzi HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\ klucza ORACLE_HOME. TNS_ADMIN masz pewnie w katalogu $ORACLE_HOME\network\admin.
Qui vit sans folie, n'est pas si sage qu'on croit
kacperek29
Piegowaty Guziec
Piegowaty Guziec
Posty: 20
Rejestracja: 17 gru 2007, 17:31
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: Oracle i PHP - błąd podłączenie do bazy.

Post autor: kacperek29 »

Dzięki Panowie za dotychczasową pomoc.
<?
PutEnv('ORACLE_HOME=D:\XEClient');
PutEnv('TNS_ADMIN=D:\XEClient\network\admin');

$db = "(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)";

if ($c = @oci_connect("login","hasło","$db"))
{
echo "Udane połączenie z bazą danych Oracle.
";
oci_close($c);
}
else
{
$errorMessage = oci_error();
print '<table border="1" cellpadding="0" cellspacing="0">';
foreach ($errorMessage as $name => $value)
print '<tr><td>'.$name.'</td><td>'.$value.'</td></tr>';
print '</table>';
}

?>
Nadal mam ten sam błąd. W poniedziałek zobaczę co dalej.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości