Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: connector od Oracle nie działa
Forum PHP.pl > Forum > Bazy danych > Oracle
czezz
Chcę testowo podłączyć się do bazy Oracle przez PHP.
Pomyślałem, że należy zrobić to analogicznie do MySQL'a więc znalazłem taki connector. Dopisałem usera/hasło/hosta i SID... ale nie działa. W przeglądarce widzę pusta białą stronę.
Mogę prosić o jakąś podpowiedź co robię źle ?

  1. <?php
  2. if ($c = oci_connect("sys", "qaz123", "159.107.88.144/orcl")) {
  3.   echo "Successfully connected to Oracle.n";
  4.   oci_close($c);
  5. } else {
  6.   $err = oci_error();
  7.   echo "Oracle Connect Error " . $err['text'];
  8. }
  9. ?>



Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production (baza postawiona testowo)
Apache/2.2.11 (Unix) DAV/2 PHP/5.2.9 - zainstalowane na Slackware-current z binarek (apache i PHP)
erix
Trywialne, ale sprawdź, czy masz w phpinfo" title="Zobacz w manualu PHP" target="_manual odpowiednie rozszerzenie załadowane, i czy function_exists" title="Zobacz w manualu PHP" target="_manual zwraca true dla funkcji oci_*.
czezz
Jak wyświetlę phpinfo to na stronie nie ma słowa o "oci" (sprawdziłem find'em w przeglądarce)
Co do funkcji function_exists - wklepałem coś takiego do pliku x.php
  1. <?php
  2. if (function_exists('oci_*')) {
  3.    echo "functions are available.<br />\n";
  4. } else {
  5.    echo "functions are not available.<br />\n";
  6. }
  7.  
  8.  
  9. ?>

wyświetliło "functions are not available"... to chyba kiepsko ?
Co mam zrobić ?
erix
Włączyć rozszerzenie? tongue.gif
czezz
Nie, funkcja function_exists zadziałała... wyświetliło, że OCI nie ma.
Ale wieczorem posiedziałem i jeszcze raz przekompilowałem Apache/PHP i co ważne instantclient-basic oraz instantclient-sdk do Oracle.

PHPINFO() wyświetla już tyle:
  1. oci8
  2. OCI8 Support enabled
  3. Version 1.2.5
  4. Revision $Revision: 1.269.2.16.2.44 $
  5. Active Persistent Connections 0
  6. Active Connections 0
  7. Oracle Instant Client Version 10.2
  8. Temporary Lob support enabled
  9. Collections support enabled
  10.  
  11. Directive Local Value Master Value
  12. oci8.default_prefetch 10 10
  13. oci8.max_persistent -1 -1
  14. oci8.old_oci_close_semantics 0 0
  15. oci8.persistent_timeout -1 -1
  16. oci8.ping_interval 60 60
  17. oci8.privileged_connect Off Off
  18. oci8.statement_cache_size 20 20


Chociaż function_exists wciąż wyświetla, że jest oci_* brak.





[UPDATE]

W shell'u zrobiłem cos takiego:

  1. -bash-3.00# php /usr/local/apache2/htdocs/test.php
  2. Successfully connected to Oracle.n


Tzn. działa smile.gif... ale tylko w shell sad.gif

kod do test.php
  1. <?php
  2. if ($c = oci_connect("sys", "qaz123", "159.107.88.144/orcl")) {
  3.  echo "Successfully connected to Oracle.n";
  4.  oci_close($c);
  5. } else {
  6.  $err = oci_error();
  7.  echo "Oracle Connect Error " . $err['text'];
  8. }
  9. ?>


Przez przeglądarkę wciąż mam komunikat [UPDATE - włączyłem w php.ini większą szczegółowość błędów]:

Warning: oci_connect() [function.oci-connect]: OCIEnvNlsCreate() failed. There is something wrong with your system - please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries in /usr/local/apache2/htdocs/test.php on line 12
Oracle Connect Error
erix
Hmm, a obie instancje korzystają z tych samych plików php.ini?
czezz
W systemie znalazłem tylko 1 plik php.ini:
  1. -bash-3.00# find / -name php.ini
  2. /usr/local/apache2/conf/php.ini


Co masz na myśli 2 instancje ? W Oracle mam tylko jedna instancje ORCL.



[UPDATE]
Zrobiłem zmianę uprawnień i dodałem zmienne użytkownikowi, który uruchamia Apache.
Widać to pomogło trochę, bo teraz jak odpalę connector w przeglądarce to mam taki objaw:

  1. Warning: oci_connect() [function.oci-connect]: ORA-12154: TNS:could not resolve the connect identifier specified in /usr/local/apache2/htdocs/test.php on line 12
  2.  
  3. Notice: Undefined index: text in /usr/local/apache2/htdocs/test.php on line 17
  4. Oracle Connect Error


[UPDATE]
Udało się smile.gif
W connectorze dodałem przy SID'zie adres localhost
  1. ($c = oci_connect("php", "qaz123", "localhost/orcl")


Successfully connected to Oracle biggrin.gif
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-2025 Invision Power Services, Inc.