Strona 1 z 1

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

: 15 lip 2009, 19:40
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?

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

: 16 lip 2009, 09:17
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/

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

: 16 lip 2009, 10:15
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 :)

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

: 16 lip 2009, 11:09
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?

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

: 16 lip 2009, 11:27
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.

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

: 16 lip 2009, 12:11
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)
?

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

: 16 lip 2009, 12:44
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.

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

: 16 lip 2009, 16:22
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...

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

: 16 lip 2009, 20:11
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");

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

: 17 lip 2009, 12:00
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.

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

: 17 lip 2009, 12:39
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.

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

: 17 lip 2009, 14:29
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.