URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 4334
[ Назад ]

Исходное сообщение
"Проблема компиляции PHP совместно с oci8 (FreeBSD)"

Отправлено stash , 05-Сен-06 11:27 
Задача состоит в том чтобы с сервера 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"... :-[ хотя это наверное уже лишнее
Помогите, пожалуйста, кто в этом что-то понимает :'(

Содержание

Сообщения в этом обсуждении
"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено vic , 05-Сен-06 12:03 
может поможет :)
http://www.opennet.ru/openforum/vsluhforumID1/56503.html - см. последний ответ..

похоже не указан путь к библе


"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено stash , 05-Сен-06 13:50 
>может поможет :)
>http://www.opennet.ru/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 как раз этот параметр (и тонны других, значения к-ых я не понимаю вовсе :-[ )

"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено stash , 05-Сен-06 14:18 
в 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 поставить :'(

"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено vic , 05-Сен-06 15:15 
>в 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 правильную экспортни


"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено stash , 05-Сен-06 17:05 
>перед configure экспортни LDFLAGS с -lpthread
>и может еще LD_LIBRARY_PATH правильную экспортни


т.е. компилровать с Линуксовыми "потоками"?


"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено spr1te , 07-Сен-06 20:27 
>>перед configure экспортни LDFLAGS с -lpthread
>>и может еще LD_LIBRARY_PATH правильную экспортни
>
>
>т.е. компилровать с Линуксовыми "потоками"?

сделал все так-же
проблема аналогичная=((
выручайте ребята=)


"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено spr1te , 07-Сен-06 22:21 
такс..
что-то получилось
запустил ./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=( )

"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено Анархист , 09-Окт-06 10:49 
>сейчас обновляю порты (RELENG_5_4) и поставлю php5 (с обычными портами в make
>config (php5-extension) - нету oci=( )
А оно там должно быть?
По моим наблюдениям - совершенно не факт.
#cd /usr/ports/lang/php5/
#make extract
#cd ./work/php-$VERSION
И далее в опциях ./configure уже ищется oci8 (для успешного выполнения скрипта ./configure необходимо наличие установленного порта клиента Оракл).

Но сути проблемы (в смысле граблей с libpthread) это увы не решает.
Все рекомендованные рецепты испробованы.
Думаю дальше.
Когда разберусь - отпишу.


"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено apoelov , 16-Окт-06 11:40 
>в 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.


"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено Анархист , 17-Окт-06 09:46 
>>терь Все стало еще хуже - выдает ошибку:
>>/usr/local/oracle/lib/libclntsh.a(sepco.o)(.text+0x7d): In function `sepcoget_login':
>>: undefined reference to `cuserid'
>>:( :(
>>блин, ну не судьба мне с OCI PHP поставить :'(
>
>
>Если верить мануалу на cuserid, то линкеру следует указать параметр -lcompat.

Дошёл до этого места.
Всё бы хорошо.
Но в строке линкования (полностью цитировать не хочу потому как очень длинная) которая собственно и выдаёт ошибку параметр '-lcompat' присутствует.
Куда рыть дальше пока не ясно.


"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено Чепиль Денис , 17-Окт-06 21:03 
Прочитал внимательно все что написано, проблема была аналогичная,
решилась так -

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. АФФТАРАМ ЗАЧЁД. Спасибо мужики !


"Проблема компиляции PHP совместно с oci8 (FreeBSD)"
Отправлено chepil , 18-Окт-06 06:42 
Вдогонку к 11 посту
http://php.nukefiles.ru/f/ref.oci8.html

"Как и обещал, решение проблемы"
Отправлено Анархист , 27-Окт-06 09:34 
>терь Все стало еще хуже - выдает ошибку:
>/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


"Как и обещал, решение проблемы"
Отправлено Владислав , 12-Сен-07 04:54 
Всем привет!
Всё сделал как указано здесь.

У меня FreeBSD 6.2
PHP4
oracle8-client
p5-DBD-Oracle

При выполнении скриптов php (не обязательно в апаче)
вместо кириллицы выпадает знаки вопроса.

Аналогичный скрипт на Perl работает как надо.

Везде во всех скриптах выставлены переменные окружения NLS_LANG
(перепробовал разные значения).

Куда ещё глянуть?

Спасибо