Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

php oracle error

[es] :: PHP :: php oracle error

[ Pregleda: 3471 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zimbala

Član broj: 37431
Poruke: 16
*.ht.hr.



Profil

icon php oracle error19.10.2004. u 14:54 - pre 215 meseci
Naime php skripta na sun serveru okida funkciju na drugom oracle serveru, koji imaju razlicite NLS_LANG postavke, vraca gresku.
Identicna skripta na windowsima i apache web serveru radi normalno sa navedenim oracle serverom, takodjer jos neke funkcije koje se
pozivaju rade i sa sun i sa win platforme. Razlika izmedju tih funkcija je jedino u tome sto ova koja ne radi treba dobiti povratnu vrijednost.


$conn = ocilogon("user","password","sid");

$komand="begin :retvar :=funkcija(...parametri...); end;";

$stmt = OCIParse($conn,$komand);

OCIBindByName($stmt,":ses",$ses,38) ;

OCIExecute($stmt) <--ERROR

OCIFreeStatement($stmt);

OCILogoff($conn);
...

greska koju dobijem je:

Warning: ociexecute(): OCIStmtExecute: ORA-06550: line 1, column 27: PLS-00553: character set name is not recognized ORA-06550: line 0, column 0: PL/SQL: Compilation unit analysis terminated in /disk2/app/bea81/user_projects/domains/gistst/applications/DefaultWebApp/website/ri/pret_odn1/javascript/login.php on line 20
Can not Execute

nls_lang na sun-u je postavljen na:

NLS_LANG=AMERICAN
NLS_CHARACTERSET=EE8ISO8859P2
NLS_NCHAR_CHARACTERSET=EE8ISO8859P2

a na drugom oracle serveru:

NLS_LANG=AMERICAN
NLS_CHARACTERSET=EE8MSWIN1250
NLS_NCHAR_CHARACTERSET=UTF8

Apache na sun serveru ima nls_lang postavljen na:

croatian_croatia.EE8ISO8859P2

Ima li ko kakvu ideju?

Hvala
 
Odgovor na temu

noctua

Član broj: 10671
Poruke: 185
*.rcub.bg.ac.yu.



Profil

icon Re: php oracle error20.10.2004. u 09:36 - pre 215 meseci
Pozdrav!

Citat:
zimbala: ...na sun serveru okida funkciju na drugom oracle serveru, koji imaju razlicite NLS_LANG postavke...
Identicna skripta na windowsima i apache web serveru radi normalno sa navedenim oracle serverom, takodjer jos neke funkcije koje se
pozivaju rade i sa sun i sa win platforme...


Nisam skapirao bas najjasnije sta je pisac hteo da kaze... postoji jedan oracle server koji se poziva sa 3-4 maxine ili ima 2 oracle servera sa dva apachea koji rade... ???
No, nije bitno da li ja razumem ili ne ali evo ti ono sto je meni pomoglo da resim slican problem:


Code:

$connString = "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(COMMUNITY=tcp.world)".
"(PROTOCOL=TCP)(Host=****.***)(Port=****)))".
"(CONNECT_DATA = (SID = ****)))";

PutEnv("ORACLE_SID=****");
PutEnv("NLS_LANG=AMERICAN_AMERICA.EE8ISO8859P2");

$connection = ora_logon("****@".$connString,"****");


Ovo je nacin koji sam koristio iz sasvim odredjenih razloga, nebitnih za ovu pricu ali, poenta je PRE otvaranja konekcije postaviti odgovarajuce parametre. Narocito obrati paznju na PutEnv().
Procitaj manual za PutEnv. Tu je detaljno objasnjeno sta sve moze da se koristi.
Kod mene je Oracle na jednoj maxini, glavni site na drugoj maxini pod Apachem a php skripte se izvrsavaju na 3oj maxini pod IIS-om.
Za Apache je default encoding UTF8 a za IIS, iskreno receno, nemam pojma...

E, sad, ovo mozes razdeliti na 2 dela (ponavljam, ako sam dobro razumeo tvoju topologiju) pa, ako skriptom "napadas" jednu bazu koristi PutEnv("NLS_NCHAR_CHARACTERSET=EE8ISO8859P2") a ako "ide" na drugu PutEnv("NLS_NCHAR_CHARACTERSET=UTF8")


http://noctua4u.blogspot.com
http://moourl.com/shfb0
..:: Aquila non captat muscas ::..
 
Odgovor na temu

zimbala

Član broj: 37431
Poruke: 16
*.ht.hr.



Profil

icon Re: php oracle error20.10.2004. u 12:29 - pre 215 meseci
probao sam svakakve kombinacije sa putenv ali uvjek ista greska, tj sa nekim postavkama nls_lang se je pucalo odmah na OciLogon komandi.
Uglavnom sve do sada sam radio na win platformi i sada to prebacujemo na Sun, a o unixu nemam pojma.

Konfiguracije je otprilike ovakva:

Server (A)
-----------
Sun Solaris
Apache 2.01
PHP 4.3.9

kod startanja Apache-a u apachectl je postavljen
NLS_LANG=croatian_croatia.EE8ISO8859P2 (mozda ga to brlja ??)


Server (B)
-----------
Oracle baza sa nls_lang postavljenim:

NLS_LANG=AMERICAN
NLS_CHARACTERSET=EE8MSWIN1250
NLS_NCHAR_CHARACTERSET=UTF8


---------------------------------------------------------------------------
kada php(A) poziva funkciju na (B) javlja gresku:

Warning: ociexecute(): OCIStmtExecute: ORA-06550: line 1, column 7: PLS-00553: character set name is not recognized ORA-06550: line
0, column 0: PL/SQL: Compilation unit analysis terminated in /usr/local/apache2/htdocs/test/test4.php on line 47

line 1, column 7 je prva dvotocka u komandi ??

$komand="begin :ses :=tis_web.security.login_gis(...params...); end;";

funkcija treba vratiti numerik vrijednost
----------------------------------------------------------------------------

Ostale funkcije koje koje pozivam a nemaju povratnu vrijednost rade ok.
 
Odgovor na temu

noctua

Član broj: 10671
Poruke: 185
*.rcub.bg.ac.yu.



Profil

icon Re: php oracle error20.10.2004. u 13:34 - pre 215 meseci
Pozdrav!

Nisam siguran da ti mogu pomoci jer Solaris nisam imao prilike videti... ali evo kako je (manje-vise) kod ostatka linux-a:
apachectl ide sa apache 1.x.x a apache2ctl ide sa Apache 2.x.x i to je skript koji pokrece server. Dakle najobicniji shell skript u kome se NE podesava server vec sluzi samo za start/restart/stop/status.

Mozda postoji mogucnost da u okviru apache naloga (na Solarisu apache ima svoju grupu i nalog, zar ne?) ubacis u .profile ili sta vec, deo podesavanja za oracle: SID, LANG, ENCODING... mada sumnjam da bi pomoglo.
Nego pokusajmo ovako:
Obrisi (izkomentarisi) to sto je postavljeno u apachectl: NLS_LANG...
Ponavljam, ne poznajem Solaris ali bi negde (/etc?) trebalo da postoji fajl u kome se konfigurise sam apache (obicno je http.conf) u kome podesavas koji je default encoding.

Code:

...
AddDefaultCharset UTF-8
....
AddCharset ISO-8859-1  .iso8859-1  .latin
....


Pogledaj manual u vezi ovoga i pokusaj (dodaj ukoliko ne postoji i postavi ga kao default) sa onim koje je postavljeno u bazi (ovo dok ne proradi a posle pokusaj prekonfigurisati da radi sa UTF)
Postavi sa PutEnv parametre kao sto su na bazi
Onda bi trebalo da proradi.
(ne moram da ti kazem da posle svake promene u conf fajlovima uradis reload ili restart, zar ne? :)

Ukoliko ni to ne pomogne, pokusaj skinuti sve default encodinge... iz php-a i iz apache-a pa onda izvrsiti skriptu. U ovom slucaju bi oracle morao da ti vrati ispravan recordset (ili sta vec) koji bi bio prikazan kojekakvim kukama i upitnicima zbog neodgovarajuceg encodinga.

Pazi jednu stvar, posto kazes da ostale procedure prolaze i izvrsavaju se, a ova treba da vrati numeric vrednost, nema nikakve logike da pukne zbog broja, mnogo vece sanse su da pukne kod nekog egzoticnog varchar-a ili slicnih stvari...

Pade mi na pamet jos jedna "budalastina":
Kolko iz koda vidim, pozivas proceduru za logovanje (?). Moguce i da je greska u parametrima koje prosledjujes... neki nezatvoren navodnik (?) ili neko prilikom logovanja (user name ili pass) ima egzoticne karaktere tipa ?> u passwordu ili imenu... ili korsti nasa slova a ti si stavio u kodu URLENCODE...

U svakom slucaju, javi mi (nam) sta se desava!
http://noctua4u.blogspot.com
http://moourl.com/shfb0
..:: Aquila non captat muscas ::..
 
Odgovor na temu

zimbala

Član broj: 37431
Poruke: 16
*.ht.hr.



Profil

icon Re: php oracle error20.10.2004. u 14:04 - pre 215 meseci
E noctua svaka cast, sve je proradilo.

u httpd.conf sam promjenio
iz
AddDefaultCharset ISO-8859-2
u
AddDefaultCharset UTF-8


Hvala jos jednom

 
Odgovor na temu

noctua

Član broj: 10671
Poruke: 185
*.rcub.bg.ac.yu.



Profil

icon Re: php oracle error20.10.2004. u 14:29 - pre 215 meseci
Pozdrav!

Sto bi nas narod reko:
PAMTI PA VRATI!
:))))

http://noctua4u.blogspot.com
http://moourl.com/shfb0
..:: Aquila non captat muscas ::..
 
Odgovor na temu

[es] :: PHP :: php oracle error

[ Pregleda: 3471 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.