Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z połączeniem z bazą danych oracle - oci
Forum PHP.pl > Forum > Bazy danych > Oracle
Tomekmar999
Witam

Tworzę strone w html i chce połączyć się z bazą oracle. Używam do tego oci, poniżej kod:
$host = "IP";
$port=1521;
$nazwa_uslugi = "XE"; // dbServiceName
$uzytkownik = "elin";
$haslo = "maleDUZE9";
$deskryptor = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST=$host)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=XE)))";
echo "AAA2 deskryptor = $deskryptor ";

$polaczenie = oci_connect(elin1,maleDUZE9,$deskryptor, 'AL32UTF8');
echo "AAA3";

if(!$polaczenie)
{
$err = oci_error();
trigger_error('Nie mozna nawiazac polaczenia z baza danych: '. $err['message'], E_USER_ERROR);
echo "AAA4";
}
echo "AAA5";

Na stronie wyświetla się wszystko do echo "AAA2 deskryptor = $deskryptor ";
Potem nic się nie dzieje, nie ma żadnej informacji o błędzie.

W php.ini próbowałem z obydwoma opcjami (podobno jedna tylko może być aktywna):
extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client
i żadnych zmian.

Proszę o pomoc.
nospor
Nie masz zainstalowanego klienta oracla na kompie.
Samo odkomentowanie extension=php_oci8.dll nic nie da, dopóki nie zainstalujesz klienta oracla
Tomekmar999
Klient jest zainstalowany, mogę połączyc się z bazą oracle za pomocą komendy:
sqlplus user/passwd@xe
Zainstalowany klient to : Oracle_OraClient10g
Baza danych to : Oracle Database 11g Express edition
Klient działa ponieważ korzysta z niego pewien program zainstalowany na moim serwerze.

Proszę o pomoc. Co można by coś jeszcze zmienic?
nospor
wykonaj

I obadaj co dokładnie masz w php poinstalowane
Tomekmar999
wykonalem. Jesli chodzi o oci jest tylko(zakładka Configure Command ):
cscript /nologo configure.js "--enable-snapshot-build" "--without-dblib" "--without-pdo-dblib" "--without-pdo-mssql" "--with-pdo-oci=C:\php-sdk\php54dev\vc9\x64\deps\instantclient_10_2\sdk,shared" "--with-oci8=C:\php-sdk\php54dev\vc9\x64\deps\instantclient_10_2\sdk,shared" "--with-oci8-11g=C:\php-sdk\php54dev\vc9\x64\deps\instantclient_11_2\sdk,shared" "--disable-debug-pack" "--disable-static-analyze

zmienna srodowiskowa wykorzystywana do polaczenia z baza jest rowniez widoczna:
Provider=OraOLEDB.Oracle.1;Password=maleDUZE9;Persist Security Info=True;User ID=eli;Data Source=XE

gdzie szukac dokladniej?
nospor
To jest windows czy linux?
Tomekmar999
windows server 2008 x64

Odpalenie funkcji :
if(!function_exists('oci_connect')) die('Oracle Not Installed');
daje rezultat:
Oracle Not Installed

Gdzie może być przyczyna? Php nie widzi oci? czy nie mozę sie połączyć z bazą?

Prośba o pomoc.
nospor
php nie widzi oci. Już ci to pisałem smile.gif
Nie pamiętam jak na windzie się to instaluje ale:
http://pl1.php.net/manual/pl/oci8.installation.php
Cytat
Installing OCI8 on Windows

On Windows, uncomment the php.ini line extension=php_oci8.dll when using Oracle 10gR2 client libraries. Uncomment extension=php_oci8_11g.dll when using Oracle 11g client libraries. These two DLLs contain equivalent functionality and only one may be enabled at a time. Make sure extension_dir is set to the directory containing the PHP extension DLLs.

If using Instant Client, set the system PATH environment variable to the Oracle library directory.

Czy te pliki .dll wrzuciłeś to właściwego katalogu? Zazwyczaj z tego co kojarze to z tym na windzie był zawsze problem
Tomekmar999
tak to tez testowalem. Php.ini jest wrzucony do katalogu c:\windows oraz dwie ponizsze linijki:

extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client
extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client

Powyzsze pliki sa w katalogu : c:\php\ext

i tak jak zgodnie z instrukcja jedna tylko moze byc odkomentowana - ale bez rezultatu. Przy kazdej probie byl robiony restart iis.
Sciezka extension_dir = "c:\php\ext" jest ustawiona w c:\w c:\windows\php.ini.

Wszystko wydaje sie byc ok ale php ciagle nie widzi oci. Co może być jeszcze przyczyna?
nospor
No ale to pliki .dll powinny być w katalogu c:/windows lub jakoś tak smile.gif
Tomekmar999
gdzie dokladnie?
Przekopiowalem cala katalog ext do katalogu windows oraz zmieniajac plik php.ini tak jak ponizej i tez nic.

Probowalem tak:
1. extension_dir = "c:\php\ext
2.extension_dir = "c:\windows\ext"
i tez nic.

Wymiekam juz naprawde, nie wiem gdzie jest problem. Masz jakies pomysly?
nospor
Nie miałeś kopiować katalogu ext. miałeś tylko .dll oracla skopiować do katalogu c:/windows... nie: c:/windows/ext/ a poprostu c:/windows. I nie mialeś już nic zmieniac w php.ini
Tyle pamiętam z problemów jakie ludzie kiedyś miewali.

ps: restartujesz apache'a po zmianach?
Tomekmar999
przekopiowalem:
php_oci8.dll
oraz
php_oci8_11g.dll
do katalogu windowsa.

Po kazdej zmianie robie restart iis (iisreset).

I nadal nic. Co musi byc w php.ini jesli chodzi o extension_dir ?

asz
Cytat(Tomekmar999 @ 13.11.2012, 16:49:52 ) *
przekopiowalem:
php_oci8.dll
oraz
php_oci8_11g.dll
do katalogu windowsa.

Po kazdej zmianie robie restart iis (iisreset).

I nadal nic. Co musi byc w php.ini jesli chodzi o extension_dir ?


Wystarczy, że skopiujesz plik oci.dll do katalogu C:\Windows (mam na myśli oci.dll z "klienta" a nie z php! ==> pobrać możesz go z tej strony http://www.oracle.com/technetwork/database...dex-097480.html [najpierw wybierz 1. link tj. Instant Client for Microsoft Windows (32-bit) a potem instantclient-basiclite-nt-12.1.0.1.0.zip (28,704,352 bytes) (cksum - 3256522486)]).

Po rozpakowaniu zip-a skopiuj z niego oci.dll do C:\Windows, usuń ; (średnik) przed extension=php_oci8.dll w C:\Windows\php.ini i zrób restart serwera.

Oczywiście mam na myśli bazę Oracle 10g XE (z 11g XE jeszcze nie kombinowałem... choć tu chyba nic się nie zmienia...) ;-)

P.S. W linijce extension_dir = ja mam ścieżkę do "php\ext " (w moim przypadku jest to "G:\php\ext"), czyli extension_dir = "G:\php\ext".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.