undefined function OCILogon()

Ireruss

Новичок
undefined function OCILogon()

windows2003 + Apach 2.2.4 win32 + PHP 5.2.1
в php.ini
1)extension_dir = C:\webserver\PHP\ext
2)extension = php_oci8.dll
extension = php_oracle.dll
(dll-ки на месте: C:\webserver\PHP\ext\php_oci8.dll и C:\webserver\PHP\ext\php_oracle.dll )

При запуске тестового скрипта с функциями из php_oracle.dll вроде такого:
PHP:
<?php
if ($c=ora_logon("user","password")) { 
  echo "Successfully connected to Oracle.\n"; 
  ora_commitoff($c); 
  ora_logoff($c); 
} else { 
  echo "Oracle Connect Error " . ora_error(); 
} 
?>
все отрабатывает нормально. А вот при использовании oci-функций:
PHP:
<?php
  $c = OCILogon("user", "password");
  if ($c) { 
    echo "Successfully connected to Oracle.\n"; 
    OCILogoff($c); 
  }
  else { 
    $err = OCIError(); 
    echo "Oracle Connect Error " . $err[text]; 
  } 
?>
вылетает ошибка: Fatal error: Call to undefined function OCILogon() in test.php on line 11

Смотрел dll-ку, там вроде есть эта функция. Менял на dll-ки из других дистрибутивов, даже из PHP4 и проч. Перебивал названия в латинской раскладке (вдруг какая буковка из другой раскладки затесалась, хоть и не должно было).

Вся работа стоит :( Что делать даже не представляю. Может кто-то сталкивался с подобным, подскажите как бототься? :confused:
 

Ireruss

Новичок
что-то мне сомнительно, что из-за отсутствия в Oracle каких-либо библитек php будет выдавать такую ошибку. В dll-ке функция определена ведь. Другое дело, что у Oracle не хватает библиотек, чтобы обслужить эти функции...
К сожалению, проверить не получится :( , т.к. DBA ставить Oracle Instant Client отказался. Да и мое руководство заявило, что oci8 нам не надо. Будем работать через php_oracle.dll :(
 

Pustota

Новичок
А как потом с пом. php_oracle.dll делать запросы к Ораклу?
Что сначала нужно, ora_parse или ora_exec, что-то я запутался и без примеров в документации не понял.
 

Ireruss

Новичок
Я , конечно, еще не волшебник, а только учусь... ora_parse -> ora_exec -> ora_fetch, можно все это заменить одной ora_do() (Эта функция является комбинацией функций ora_parse(), ora_exec() и ora_fetch(). Она разбирает и выполняет оператор, затем извлекает первый результирующий ряд).
 

tony2001

TeaM PHPClub
>что-то мне сомнительно, что из-за отсутствия в Oracle каких-либо библитек php
>будет выдавать такую ошибку. В dll-ке функция определена ведь.

Определена, конечно. Только .dll не грузится.
Почему - см. выше.

>Будем работать через php_oracle.dll
Правильно, лучше использовать устаревший и уже лет 5 никем не поддерживаемый интерфейс к 7-му ораклу, чем скачать 30Mb оракловых либ и положить из в windows/system32.
Удачи.
 

Ireruss

Новичок
Автор оригинала: tony2001
>Будем работать через php_oracle.dll
Правильно, лучше использовать устаревший и уже лет 5 никем не поддерживаемый интерфейс к 7-му ораклу, чем скачать 30Mb оракловых либ и положить из в windows/system32.
Удачи.
Скачал. Положил в windows/system32. Тест прошел. Будем дальше разбираться с Oracle.
Tony2001, большое спасибо.
 

voe

Новичок
Очем речь! У меня таже проблема, что скачивать?
Ireruss что ты именно скачал!
 

Ireruss

Новичок
Автор оригинала: voe
...что скачивать? Ireruss что ты именно скачал!
То что посоветовал tony2000 - Instant Client. Адрес уже не помню, похоже, просто нашел поисковиком. ;)

Только была еще небольшая проблема. Подробности уже забылись - что помню.
Наш DBA отказался ставить IC мотивируя это тем, что поставленный им стандартный клиент постоянно обновляется, и при следующем обновлении никто не гарантирует нормальную работу Оракла.
Ну тогда я сам тупо скопировал все длл-ки от IC в систем32. Через пару дней вылезла ошибка в одном из приложений, использующих одну из этих длл (точно не помню какую, извините). :( Нашли проблемную длл. Заменили на прежнюю (я предварительно сохранил все длл-ки, которые менял). Приложение заработало и РНР продолжает работать p :)
 

voe

Новичок
Люди не хочу не кого бесить своей неграмотностью в сфере PHP+ORACLE
Но копирование в system32 мне непомогло! ошибка описаная в перевом посте осталась!
Все ставил из инсталяторов . Сначала Апатч потом PHP вибирал там пункт Oracle

-~{}~ 19.07.07 09:27:

Люди помогите не бросайте!
Установку призводил как написано в The Underground PHP
and Oracle® Manual.
 

Ireruss

Новичок
Я вообще-то сам практически неграмотный в PHP+Oracle (особенно Оракакел), только начинаю осваивать. ;)
Подозреваю, если делал все как положено надо проверить, может где-то ошибся и сделал что-то не так.
Например, можно:
1. Проверить настройки в php.ini (а сам PHP, без БД точно работает?), в tnsnames.ora.
2. После всех изменений в php.ini не забывал перезапускать апач?
 

voe

Новичок
PHP сам по себе работает.
Что в tnsnames.ora смотреть?
Апатч перезагружал.
 

Ireruss

Новичок
Ну это я просто в виде примера привел, что надо все подряд шерстить, проверять. А так, там просто настройки подключения клиента к Оракакелу. К неработе библиотек tnsnames.ora отношение имеет слабенькое. ;)
Извините, конукретно подсказать что-то не могу.
В принципе, там ничего сложного в этом подключении. Библиотеки подключаются как обычно. Пути там в PHP.ini должны быть правильные и проч. Во всех руководствах это одинаково описано. Вот на этом сайте есть в FAQ-ах, со ссылками в конце статьи на другие ресурсы.
Единственное что было сюрпризом -- длл-ки от инстант-клиента. Спасибо tony2000, разрешилось более менее. Всё.
 

voe

Новичок
Какимто чудом все заработало.
Еще один не хороший сюрприз то ято Zend Studia не видет DLL которые прописаны в PHP.ini ей надо в ее папку скидывать и ее php.ini скидывать.

ВСЕМ ОГРОМНОЕ СПАСИБО ВСЕМ КТО ПОМОГАЛ!!!
 
Сверху