The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"PHP не видит оракловые либы"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"PHP не видит оракловые либы"  
Сообщение от Dmitriy email(??) on 21-Июл-08, 12:16 
Здравствуйте всем,

помогите пожалуйста разобраться,

пытаюсь из php-скрипта зацепиться к Oracle - но чёт ни как не хочет.
установлено nGinx-0.7.4, instantclient-11, php-5.2.6
sqlplus цепляется без проблем, перменные окружения прописал но при попытке зацепиться к базе php`ой через web nGinx говорит "504 Gateway Time-out" - мож кто то либов не видит php или nGinx. Куда копать?

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "PHP не видит оракловые либы"  
Сообщение от us.master (ok) on 21-Июл-08, 12:52 
PHP компилил с этими библиотеками?

        --with-pdo-odbc=unixODBC \
        --with-pdo-oci=shared,/usr/local/oracle8-client \
        --with-pdo-mysql=/usr/local/mysql \
        --with-unixODBC


phpinfo()
внимательно кури :-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "PHP не видит оракловые либы"  
Сообщение от Dmitriy email(??) on 21-Июл-08, 13:04 
'--with-mysql=/usr/local/mysql'
'--enable-fastcgi'
'--enable-force-cgi-redirect'
'--with-oci8=instantclient,/usr/include/oracle/11.1.0.1/client,/usr/lib/oracle/11.1.0.1/client'

вот так конфигурил,
т.е. так как у меня не юудет работать и надо пересобирать?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "PHP не видит оракловые либы"  
Сообщение от us.master (ok) on 21-Июл-08, 15:40 
Попробуй:

--with-oci=instantclient,/usr/include/oracle/11.1.0.1/client,/usr/lib/oracle/11.1.0.1/client

То есть без 8.

Или делай через PDO.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "PHP не видит оракловые либы"  
Сообщение от Dmitriy email(??) on 21-Июл-08, 16:06 
при попытке собрать без 8-ки (--with-oci=) говорит

checking for ncurses support... no
checking for Oracle (OCI8) support... no
checking for unixODBC support... configure: error: ODBC header file '/usr/local/include/sqlext.h' not found!

а этот sqlext.h - мз какого он ODBC-пакета должен быть?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "PHP не видит оракловые либы"  
Сообщение от us.master (ok) on 22-Июл-08, 10:21 
>при попытке собрать без 8-ки (--with-oci=) говорит
>
>checking for ncurses support... no
>checking for Oracle (OCI8) support... no
>checking for unixODBC support... configure: error: ODBC header file '/usr/local/include/sqlext.h' not found!
>
>
>а этот sqlext.h - мз какого он ODBC-пакета должен быть?

export ORACLE_HOME="/usr/local/oracle8-client"

./configure --with-mysql=/usr/local/mysql \
        --with-apache2=/usr/local/apache \
        --with-apxs2=/usr/local/apache/bin/apxs \
        --with-iconv=/usr/local \
        --with-ldap=/usr/local \
        --with-snmp=/usr/local \
        --with-pgsql=/usr/local/pgsql \
        --enable-track-vars \
        --enable-ftp \
        --enable-sockets \
        --without-pear \
        --with-gd \
        --with-zlib \
        --with-ttf \
        --with-freetype-dir=/usr/local/include/freetype2/freetype \
        --with-pdo-odbc=unixODBC \
        --with-pdo-oci=shared,/usr/local/oracle8-client \
        --with-pdo-mysql=/usr/local/mysql \
        --with-unixODBC > ../configure-php-log.txt

sqlext.h из unixODBC, естественно

получаем:

checking for Oracle (OCI8) support... no
...
checking for unixODBC support... yes
...
checking whether to enable pcntl support... no
checking whether to enable PDO support... yes
...
checking for PDO includes... checking for PDO includes... /usr/dist/php/ext
checking Oracle OCI support for PDO... yes, shared
checking Oracle Install-Dir... /usr/local/oracle8-client :/usr/local/oracle8-client:
checking if that is sane... yes
checking size of long int... 4
checking checking if we're at 64-bit platform... no
checking OCI8 libraries dir... /usr/local/oracle8-client/lib
checking Oracle version... 8.1
checking for OCIEnvCreate in -lclntsh... no
checking for OCIEnvNlsCreate in -lclntsh... no
checking for OCILobIsTemporary in -lclntsh... no
checking for OCILobIsTemporary in -locijdbc8... no
checking for OCICollAssign in -lclntsh... no
checking for OCIStmtFetch2 in -lclntsh... no
checking for PDO includes... (cached) /usr/dist/php/ext
checking for ODBC v3 support for PDO... yes
checking for PDO includes... (cached) /usr/dist/php/ext
checking for selected PDO ODBC flavour... unixODBC
          libs       /usr/local/lib,
          headers    /usr/local/include
checking for odbc.h in /usr/local/include... no
checking for odbcsdk.h in /usr/local/include... no
checking for iodbc.h in /usr/local/include... no
checking for sqlunix.h in /usr/local/include... no
checking for sqltypes.h in /usr/local/include... yes
checking for sqlucode.h in /usr/local/include... yes
checking for sql.h in /usr/local/include... yes
checking for isql.h in /usr/local/include... no
checking for sqlext.h in /usr/local/include... yes
checking for isqlext.h in /usr/local/include... no
checking for udbcext.h in /usr/local/include... no
checking for sqlcli1.h in /usr/local/include... no
checking for LibraryManager.h in /usr/local/include... no
checking for cli0core.h in /usr/local/include... no
checking for cli0ext.h in /usr/local/include... no
checking for cli0cli.h in /usr/local/include... no
checking for cli0defs.h in /usr/local/include... no
checking for cli0env.h in /usr/local/include... no
checking for SQLBindCol in -lodbc... yes
checking for SQLAllocHandle in -lodbc... yes
...
checking for PDO includes... (cached) /usr/dist/php/ext

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "PHP не видит оракловые либы"  
Сообщение от us.master (ok) on 22-Июл-08, 16:22 
Да, и ещё:

в php.ini у меня прописано:

extension=pdo_oci.so
extension=oci8.so
extension=/usr/local/lib/php/ext/pdo_mysql.so

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "PHP не видит оракловые либы"  
Сообщение от Dmitriy email(??) on 24-Июл-08, 16:01 
собрал/поставил unixODBC потом

пересобрал php вот так

./configure --prefix=/usr/local/php \
            --with-mcrypt=/usr/local/mcrypt \
            --with-exec-dir=/usr/local/php/bin \
            --enable-safe-mode \
            --enable-calendar \
            --enable-exif \
            --enable-ftp \
            --with-iconv \
            --enable-mbstring \
            --with-mime-magic \
            --with-pdo-mysql=/usr/local/mysql \
            --enable-ucd-snmp-hack \
            --enable-sockets \
            --enable-fastcgi \
            --enable-force-cgi-redirect \
            --with-pdo-odbc=unixODBC \
            --with-oci=instantclient,/usr/include/oracle/11.1.0.1/client,/usr/lib/oracle/11.1.0.1/client \
            --with-unixODBC

но в системе не появились файлы pdo_oci.so и oci8.so

php-cgi при запуске демоном ругается на их отсутствие и php-шный скрипт ругается вот так

Fatal error: Call to undefined function ocilogon() in /www/htdocs/script.php on line хххх

соответственно пересобрал с поддержкой --with-oci8 но при открытии php странички nGinx пишет 504 Gateway Time-out.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "PHP не видит оракловые либы"  
Сообщение от us.master (ok) on 24-Июл-08, 16:22 
>но в системе не появились файлы pdo_oci.so и oci8.so
>

:-))))))))
А откуда они появятся-то? Они при конфигурировании PHP уже должны быть.
Надо Oracle Client и неплохо бы Oracle ODBC driver поставить для начала.
В нём эти библиотеки.
Причем если это Фря, то всё ручками придется делать.

>php-cgi при запуске демоном ругается на их отсутствие и php-шный скрипт ругается
>вот так
>
>Fatal error: Call to undefined function ocilogon() in /www/htdocs/script.php on line хххх
>

Конечно, он про эту функцию ничего не знает. Oracle Client-то не поставлен.

>
>соответственно пересобрал с поддержкой --with-oci8 но при открытии php странички nGinx пишет
>504 Gateway Time-out.

Для начала можно перловым скриптом из консоли потестировать, что Оракловые библиотеки работают.

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";

# ОХЬХРЕ ОЕПЕЛЕММШЕ НЙПСФЕМХЪ ЙСДЮ-МХАСДЭ Б ГЮЦПСГНВМШИ ЯЙПХОР /etc/init.d/dbora
# ХКХ Б /etc/profile, Ю РН Oracle АСДЕР МЕУНПНЬН ПСЦЮРЭЯЪ АЕГ МХУ:

# ORACLE_HOME=/home/oracle/app/oracle/product/8.0.5; export ORACLE_HOME
# ORACLE_BASE=/home/oracle/app/oracle; export ORACLE_BASE
# ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
# ORACLE_SID=baza; export ORACLE_SID
# NLS_LANG=russian_cis.CL8KOI8R; export NLS_LANG

$host   = "blablabla.blabla.com";
$dbname = "BASE1";
$sid    = $dbname;
$user   = "user1";
$passwd = "12345678";

#ORACLE_HOME=/usr/local/oracle8-client
#LD_LIBRARY_PATH=:/usr/local/oracle-instantclient-10.2

$ENV{ORACLE_HOME}="/usr/local/oracle8-client";
$ENV{LD_LIBRARY_PATH}=$ENV{LD_LIBRARY_PATH}.":/usr/local/oracle-instantclient-10.2";
$ENV{NLS_LANG}="russian_cis.CL8MSWIN1251";

use DBI;

#############################
print "Available DBI drivers:
\n";
$,      = "
\n";
@names  = DBI->available_drivers;
print @names;
print "<hr>\n";
#############################

$dbh = DBI->connect("dbi:Oracle:$dbname", $user, $passwd) || die "$DBI::errstr";

#$dbh = DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user, $passwd);

print "ORACLE_HOME=".$ENV{ORACLE_HOME}."
\n";
print "LD_LIBRARY_PATH=".$ENV{LD_LIBRARY_PATH}."
\n";

print "\n
dbh=$dbh
\n";

$sql    = "SELECT * FROM table1 ORDER BY rec_date";
$sth    = $dbh->prepare($sql);

print "sth=".$sth."
\n";

$sth->execute;

print "rows=".$sth->rows."
\nresult=".$result."
\n";

while (@row = $sth->fetchrow)
{
        $id                     = $row[0];
        $rec_date       = $row[1];
        $rem_ip         = $row[2];
        $rec_msg        = $row[3];

        print "<hr>$id - $rec_date - $rem_ip - $rec_msg\n";
}

$sth->finish;
$dbh->disconnect;

exit 1;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "PHP не видит оракловые либы"  
Сообщение от us.master (ok) on 24-Июл-08, 16:25 
Всё. Устал я с Вами. :-)
Курите мануалы (вдумчиво).
И разберитесь, что такое базы данных, драйверы и интерфейсы для них (типа ODBC, DBI, DBD).
Удачи! :-)
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "PHP не видит оракловые либы"  
Сообщение от Dmitriy email(??) on 24-Июл-08, 17:09 
ну ладно спасибо и на том,

кстати вот такой скрипт нормально отрабатывает

#!/usr/bin/perl -w

use DBI;

#  $dbh = DBI->connect("dbi:Oracle:$dbname", $user, $passwd);
my $host="192.168.20.1";
my $user="user";
my $passwd="password";
my $sid="ORACLE_SID";
my $dbh = DBI->connect("dbi:Oracle:host=$host;sid=$sid", $user, $passwd);
my $sql="select name from table where id='16771'";
my $sth=$dbh->prepare($sql);
$sth->execute();
my $value =  $sth->ora_fetch_scroll(OCI_FETCH_LAST,0);
print "id=".$value->[0],"\n";

это говорит о том что клиент установлен как и перловые DBI, к тому же ранее я писал что sqlplus нормально коннектится и работает это так же подтверждает установленный клиент

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру