Задача состоит в том чтобы с сервера FreeBSD соединятся (через PHP) с сервером Oracle (стоит Oracle 9i).
Я отыскал в интернете некий ПОРТ, официально ораклом не поддерживаемый для FreeBSD (oracle8-client-0.1.1.tar.bz2), установил его (как в редми было написано), а при компиляции php с таким конфигом:
-----------------
./configure --prefix=/usr --with-apache=../apache_1.3.33 \
LIBS=-lpthread \
--with-mysql=/usr/local/mysql \
--with-gnu-ld --with-config-file-path=/usr/local/apache/conf \
--enable-sockets --disable-debug --enable-safe-mode \
--enable-inline-optimization --enable-memory-limit \
--with-oci8=/usr/local/oracle
-----------------
спустя некоторое время вылетают такие ошибки:
-----------------
ext/oci8/oci8_lob.o(.text+0xf46): In function `php_oci_lob_import':
/usr/src/php-5.1.3/ext/oci8/oci8_lob.c:596: undefined reference to `__pthread_read'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x196): In function `sltstcr':
: undefined reference to `pthread_create'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x261): In function `sltstgetp':
: undefined reference to `pthread_getschedparam'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x548): In function `sltstjn':
: undefined reference to `pthread_join'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x639): In function `sltstkill':
: undefined reference to `pthread_kill'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x755): In function `sltstsetp':
: undefined reference to `pthread_getschedparam'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x7ba): In function `sltstsetp':
: undefined reference to `pthread_setschedparam'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x7f6): In function `sltstspawn':
: undefined reference to `pthread_attr_init'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x80e): In function `sltstspawn':
: undefined reference to `pthread_attr_setdetachstate'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x826): In function `sltstspawn':
: undefined reference to `pthread_create'
/usr/local/oracle/lib/libclntsh.a(sltst.o)(.text+0x8bb): In function `sltsttr':
: undefined reference to `pthread_exit'
/usr/local/oracle/lib/libclntsh.a(sltsq.o)(.text+0x130): In function `SltsqSigFunc':
: undefined reference to `pthread_exit'
/usr/local/oracle/lib/libclntsh.a(sepco.o)(.text+0x7d): In function `sepcoget_login':
: undefined reference to `cuserid'
/usr/local/oracle/lib/libclntsh.a(sltspc.o)(.text+0x227): In function `sltspctimewait':
: undefined reference to `pthread_cond_timedwait'
/usr/local/oracle/lib/libclntsh.a(sslts.o)(.text+0x3c): In function `ssltstraise':
: undefined reference to `pthread_kill'
*** Error code 1
-----------------
pthread в системе "стоят"... что делать не понимаю... я даже пытался руками включать в ext/oci8/php_oci8.h файл pthread - но результат один и тот же....
и даже в самом скрипте (configure) правил чтобы "использовать pthread" всегда было "yes"... :-[ хотя это наверное уже лишнее
Помогите, пожалуйста, кто в этом что-то понимает :'(
может поможет :)
http://www.opennet.me/openforum/vsluhforumID1/56503.html - см. последний ответ..похоже не указан путь к библе
>может поможет :)
>http://www.opennet.me/openforum/vsluhforumID1/56503.html - см. последний ответ..
>
>похоже не указан путь к библе
спасибо, попробовал конфигурировать вот так:
--------------------------------
./configure --prefix=/usr --with-apache=../apache_1.3.33 \
--libdir=/usr/lib \
--with-mysql=/usr/local/mysql \
--with-gnu-ld --with-config-file-path=/usr/local/apache/conf \
--enable-sockets --disable-debug --enable-safe-mode \
--enable-inline-optimization --enable-memory-limit \
--with-oci8=/usr/local/oracle
--------------------------------
пробовал и /usr/local/lib (и там и там лежит библиотека libpthread внутри к-ой "прописаны" все эти функции)
я так понимаю, что просто компилятору надо в доп опциях приписать что-то вроде -pthread, но вот в том же Makefile я вижу напротив EXTRA_LDFLAGS как раз этот параметр (и тонны других, значения к-ых я не понимаю вовсе :-[ )
в Makefile вставил в
EXTRA_LDFLAGS_PROGRAM
-pthread
терь Все стало еще хуже - выдает ошибку:
/usr/local/oracle/lib/libclntsh.a(sepco.o)(.text+0x7d): In function `sepcoget_login':
: undefined reference to `cuserid'
:( :(
блин, ну не судьба мне с OCI PHP поставить :'(
>в Makefile вставил в
>EXTRA_LDFLAGS_PROGRAM
>-pthread
>терь Все стало еще хуже - выдает ошибку:
>/usr/local/oracle/lib/libclntsh.a(sepco.o)(.text+0x7d): In function `sepcoget_login':
>: undefined reference to `cuserid'
>:( :(
>блин, ну не судьба мне с OCI PHP поставить :'(
перед configure экспортни LDFLAGS с -lpthread
и может еще LD_LIBRARY_PATH правильную экспортни
>перед configure экспортни LDFLAGS с -lpthread
>и может еще LD_LIBRARY_PATH правильную экспортни
т.е. компилровать с Линуксовыми "потоками"?
>>перед configure экспортни LDFLAGS с -lpthread
>>и может еще LD_LIBRARY_PATH правильную экспортни
>
>
>т.е. компилровать с Линуксовыми "потоками"?сделал все так-же
проблема аналогичная=((
выручайте ребята=)
такс..
что-то получилось
запустил ./configure --without-mysql --with-apxs --with-oci8=shared --with-oracle=shared
shard for oci and oracle одинаковые
make
make install
поставился пхп, все ок запустилось
php работает
но при запуске ocilogon - php падает и предлагает скачать файл
сейчас обновляю порты (RELENG_5_4) и поставлю php5 (с обычными портами в make config (php5-extension) - нету oci=( )
>сейчас обновляю порты (RELENG_5_4) и поставлю php5 (с обычными портами в make
>config (php5-extension) - нету oci=( )
А оно там должно быть?
По моим наблюдениям - совершенно не факт.
#cd /usr/ports/lang/php5/
#make extract
#cd ./work/php-$VERSION
И далее в опциях ./configure уже ищется oci8 (для успешного выполнения скрипта ./configure необходимо наличие установленного порта клиента Оракл).Но сути проблемы (в смысле граблей с libpthread) это увы не решает.
Все рекомендованные рецепты испробованы.
Думаю дальше.
Когда разберусь - отпишу.
>в Makefile вставил в
>EXTRA_LDFLAGS_PROGRAM
>-pthread
>терь Все стало еще хуже - выдает ошибку:
>/usr/local/oracle/lib/libclntsh.a(sepco.o)(.text+0x7d): In function `sepcoget_login':
>: undefined reference to `cuserid'
>:( :(
>блин, ну не судьба мне с OCI PHP поставить :'(
Если верить мануалу на cuserid, то линкеру следует указать параметр -lcompat.
>>терь Все стало еще хуже - выдает ошибку:
>>/usr/local/oracle/lib/libclntsh.a(sepco.o)(.text+0x7d): In function `sepcoget_login':
>>: undefined reference to `cuserid'
>>:( :(
>>блин, ну не судьба мне с OCI PHP поставить :'(
>
>
>Если верить мануалу на cuserid, то линкеру следует указать параметр -lcompat.Дошёл до этого места.
Всё бы хорошо.
Но в строке линкования (полностью цитировать не хочу потому как очень длинная) которая собственно и выдаёт ошибку параметр '-lcompat' присутствует.
Куда рыть дальше пока не ясно.
Прочитал внимательно все что написано, проблема была аналогичная,
решилась так -setenv LDFLAGS -lpthread
./configure --enable-versioning --enable-memory-limit --with-layout=GNU --with-config-file-scan-dir=/usr/local/etc/php --disable-all --enable-libxml --with-libxml-dir=/usr/local --enable-spl --with-regex=php --with-apxs2=/usr/local/sbin/apxs --disable-ipv6 --prefix=/usr/local --with-freetype --with-freetype-dir=/usr/local/include/freetype2/freetype --with-oracle=/usr/local/oracle8-client --with-oci8=/usr/local/oracle8-client i386-portbld-freebsd6.0ВСЕ ЗАРАБОТАЛО НА УРА !!!, полноценная работа с ораклом.
Также рекомендую статью,
http://www.boom.ge:8080/cached.jsp?idx=0&id=483368
Конкретно 7 ответ начинающийся "Я прошу всех извинить меня за непроглядную упорную тупость", перед компиляцией сделал то, что советовал автор. Проблема все равно оставалась, пока не добавил волшебную строчку "setenv LDFLAGS -lpthread", не знаю, нужно или нет, но, linuxthreads я из портов ставил.P.S. АФФТАРАМ ЗАЧЁД. Спасибо мужики !
Вдогонку к 11 посту
http://php.nukefiles.ru/f/ref.oci8.html
>терь Все стало еще хуже - выдает ошибку:
>/usr/local/oracle/lib/libclntsh.a(sepco.o)(.text+0x7d): In function `sepcoget_login':
>: undefined reference to `cuserid'Экспериментально выяснено, что лечится следующим шаманским заклинанием:
export LDFLAGS="-lpthread -L/usr/local/oracle8-client/lib -lclntst8 -lcompat -lm"Подробно и развёрнуто описано здесь (на текущий момент редакция ещё не окончательная):
http://www.nixp.ru/articles/freebsd_apache_php_oracle
Всем привет!
Всё сделал как указано здесь.У меня FreeBSD 6.2
PHP4
oracle8-client
p5-DBD-OracleПри выполнении скриптов php (не обязательно в апаче)
вместо кириллицы выпадает знаки вопроса.Аналогичный скрипт на Perl работает как надо.
Везде во всех скриптах выставлены переменные окружения NLS_LANG
(перепробовал разные значения).Куда ещё глянуть?
Спасибо