Ошибка OCIEnvInit() failed! Не удаляйте пожалуйста, ОЧЕНЬ нужно

Silbermann

Новичок
Ошибка OCIEnvInit() failed! Не удаляйте пожалуйста, ОЧЕНЬ нужно

Привет еще раз. Я знаю, что об этой проблемы уже писали здесь нираз, я и сам уже о ней писал, но просто ничего не помогает. При вызове функции OCILongon() вылетает ошибка

Warning: ocilogon() [function.ocilogon]: OCIEnvInit() failed. There is something wrong with your system - please check that ORACLE_HOME is set and points to the right directory in C:\Program Files\Apache Group\Apache2\htdocs\test\index.php on line 12

Переменные окружения прописаны правильно

PutEnv('ORACLE_SID=FST');
PutEnv('ORACLE_HOME=j:\ora920\bin');
PutEnv('TNS_ADMIN=j:\ora920\network\admin');

j:\ - это сетевой диск, может в этом проблема, хотя навряд ли.
С этим клиентом работают все приложения на моей машине и все в порядке.
Меня смущает ORACLE_SID. Если я правильно понял, то это
название записи в tnsnames.ora

Скажем
FST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = fst)
)
)

FST - в данном случае ?

Заранее спасибо. Ваша помощь - последний мой шанс :)
 

Serguitar

Новичок->продвинутый
Silbermann
Подозреваю, что пока Оракл клиент не будет стоять ИМЕННО на той же машине, где выполняется php-скрипт, эта ошибка все равно будет вылетать. И, имхо, никакие переменные окружения вряд ли помогут.
 

tony2001

TeaM PHPClub
Before using this extension, make sure that you have set up your Oracle environment variables properly for the Oracle user, as well as your web daemon user. These variables should be set up before you start your web-server.
 

Serguitar

Новичок->продвинутый
2tony2001
Насколько я знаю эти переменные определяются в процессе работы php_oci8.dll и oci.dll оракл-клиента. Именно oci.dll возвращает, если можно так сказать, переменные php_oci8.dll.
Я сильно ошибаюсь?
 

tony2001

TeaM PHPClub
определяются ?
они требуются oci.dll/libclntsh.so, т.к. при/для инициализации оракловой либы ей нужно посмотреть в tnsnames.ora + знать, где брать свои либы-компаньоны.
 

Serguitar

Новичок->продвинутый
tony2001
то есть механизм такой: oci.dll/libclntsh.so - смотрит в tnsnames.ora всё, что ей нужно, а php_oci8.dll получает от oci.dll, что он там посмотрел?
 

tony2001

TeaM PHPClub
нет.
php_oci8.dll вызывает OCIInitialize() (а потом и OCIEnvInit(), это на самом деле новая версия OCIInitialize()) из oci.dll
если ДО этого не были объявлены переменные (т.е. oci.dll их не нашла), то OCIEnvInit() обломается и юзер получит ошибку - см. выше.
строго говоря, php_oci8 наплевать на эти переменные и что там нашла oci.dll, нам нужно только чтобы oci.dll работала.
и если она не работает - бум. стоп. всё пропало.
 
Сверху