mar 21 2013
[ORACLE] [PHP] Jak ustawić instantclient w PHP?
No właśnie, niby sprawa oczywista… Ale nie do końca. Wg tego, co można znaleźć w necie, wystarczy w kodzie PHP, np w głównym index.php ustawić na samym początku konfigurację i sprawa załatwiona. Patrz przykład:
1 2 3 | putenv("NLS_LANG='POLISH_POLAND.EE8MSWIN1250'); putenv("NLS_DATE_FORMAT ='RRRR-MM-DD'); putenv("NLS_NUMERIC_CHARACTERS ='.,'); |
Podobnie można to ustawić w php.ini dla serwera apache, ale…
Ale jak się okazuje, w wielu przypadkach, zwyczajnie to nie działa. W przypadku wersji instalacyjnej, w zasadzie problem nie występuje, gdyż w naszym rejestrze systemu [OS MICROSOFT] tworzą się odpowiednie zapisy dotyczące konfiguracji i w zasadzie problemu z działaniem tejże bazy nie ma. A nawet jeśli chcemy co nieco zmienić, to wystarczy wy-edytować odpowiedni klucz rejestru i zrestartować apache’a.
Przykład:
Klient oracle 11g po instalacji dodaje do klucza:
1 | HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NAZWA_TWOJEJ_INSTALKI |
1 | POLISH_POLAND.EE8PC852 |
W przypadku instantclient takiego klucza rejestru nie ma. [jeszscze] W deklaracji PHP nie koniecznie działa, co wtedy?
Otóż sprawa jest dość prosta, nie wymaga znajomości edycji rejestru, ani PHP. Edytujemy lub dodajemy nowe zmienne środowiskowe systemu [np win7->właściwości systemu/zaawansowane] w grupie zmienne systemowe, restart apache i gotowe.
Dla przykładu możemy określić np :
1 2 3 4 5 6 7 | NLS_LANG , NLS_DATE_FORMAT , NLS_NUMERIC_CHARACTERS, itp. |
Sprawdzone, działa!