Страница 1 из 1

php7+oci8

Добавлено: 2019-02-23 10:04:50
teejay
Всем добрый день.
Есть сервер на

Код: Выделить всё

FreeBSD 11.2-RELEASE-p3 FreeBSD 11.2-RELEASE-p3 #0
root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64
ещё есть сервер с базой Oracle. Есть желание установить на фрю php (версия не принципиальна) и подружить с Ораклом. Проблема заключается в том, что раньше с php5 шло расширение oci8 для работы с Ораклом, теперь его нет в портах. Поэтому решил попробовать собрать php73 из исходников с этим расширением. Для этого начал с установки Oracle instant client, sqlplus, sdk:
загрузил в ядро

Код: Выделить всё

15    1 0xffffffff82b8e000 31e50    linux64.ko
16    1 0xffffffff82bc0000 2d28     linux_common.ko
установил

Код: Выделить всё

linux_base-c7
далее установил всё от оракла и настроил окружение:

Код: Выделить всё

ORACLE_HOME=/usr/local/oracle/instantclient_11_2
LD_LIBRARY_PATH=/compat/linux/lib64:/usr/local/lib:/usr/local/oracle/instantclient_11_2
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin:/usr/local/oracle/instantclient_11_2
из rpm от CentOS7 взял libaio.so.1.0.0, libaio.so.1.0.1.
Проверил возможность подключения к базе при помощи родной утилиты от Ораклы SQLPlus, всё заработало без проблем.
Пришло время собирать из исходников сам php73. Для начала сконфигурировал всё по умолчанию:

Код: Выделить всё

./configure
./make
./make test

...
=====================================================================
TEST RESULT SUMMARY                                                 
---------------------------------------------------------------------
Exts skipped    :   49                                               
Exts tested     :   26                                               
---------------------------------------------------------------------
                                                                     
Number of tests : 16122             10739                            
Tests skipped   : 5383 ( 33.4%) --------                             
Tests warned    :    0 (  0.0%) (  0.0%)                             
Tests failed    :   69 (  0.4%) (  0.6%)                             
Expected fail   :   36 (  0.2%) (  0.3%)                             
Tests passed    : 10634 ( 66.0%) ( 99.0%)                            
---------------------------------------------------------------------
Time taken      :  415 seconds                                       
=====================================================================
Всё вроде впорядке, дялее попробовал собрать php7 с опцией

Код: Выделить всё

./configure --with-oci8=instantclient,/usr/local/oracle/instantclient_11_2 --enable-opcache=no
А вот сборка не проходит, ругается на библиотеку:

Код: Выделить всё

/usr/bin/ld: warning: libnnz11.so, needed by /usr/local/oracle/instantclient_11_2/l
ibclntsh.so, not found (try using -rpath or -rpath-link)                           
/usr/bin/ld: warning: libdl.so.2, needed by /usr/local/oracle/instantclient_11_2/li
bclntsh.so, not found (try using -rpath or -rpath-link)                            
/usr/bin/ld: warning: libm.so.6, needed by /usr/local/oracle/instantclient_11_2/lib
clntsh.so, not found (try using -rpath or -rpath-link)                             
/usr/bin/ld: warning: libpthread.so.0, needed by /usr/local/oracle/instantclient_11
_2/libclntsh.so, not found (try using -rpath or -rpath-link)                       
/usr/bin/ld: warning: libnsl.so.1, needed by /usr/local/oracle/instantclient_11_2/l
ibclntsh.so, not found (try using -rpath or -rpath-link)                           
/usr/bin/ld: warning: libc.so.6, needed by /usr/local/oracle/instantclient_11_2/lib
clntsh.so, not found (try using -rpath or -rpath-link)
/usr/local/oracle/instantclient_11_2/libclntsh.so: undefined reference to `snzdafn_
assemble_filename'                                                                 
/usr/local/oracle/instantclient_11_2/libclntsh.so: undefined reference to `geteuid@
GLIBC_2.2.5'                                                                       
/usr/local/oracle/instantclient_11_2/libclntsh.so: undefined reference to `memcmp@G
LIBC_2.2.5'                                                                        
/usr/local/oracle/instantclient_11_2/libclntsh.so: undefined reference to `strdup@G
LIBC_2.2.5'                                                                        
/usr/local/oracle/instantclient_11_2/libclntsh.so: undefined reference to `lseek64@
GLIBC_2.2.5'                                                                       
/usr/local/oracle/instantclient_11_2/libclntsh.so: undefined reference to `sigactio
n@GLIBC_2.2.5'                                                                     
/usr/local/oracle/instantclient_11_2/libclntsh.so: undefined reference to `nztwClos
eWallet'   
...
но указанные библиотеки есть:

Код: Выделить всё

ldd libclntsh.so
libclntsh.so:
libnnz11.so => /usr/local/oracle/instantclient_11_2/libnnz11.so (0x803a000
00)
libdl.so.2 => /compat/linux/lib64/libdl.so.2 (0x803dcd000)
libm.so.6 => /compat/linux/lib64/libm.so.6 (0x803fd1000)
libpthread.so.0 => /compat/linux/lib64/libpthread.so.0 (0x8042d3000)
libnsl.so.1 => /compat/linux/lib64/libnsl.so.1 (0x8044ef000)
libc.so.6 => /compat/linux/lib64/libc.so.6 (0x804708000)
libaio.so.1 => /compat/linux/lib64/libaio.so.1 (0x800643000)
ld-linux-x86-64.so.2 (0x804acb000)
Возможно ли решить данную проблему и подружить php с Ораклом?
Библиотека рассчитана на Линукс, пробовал делать

Код: Выделить всё

brandelf -t FreeBSD libclntsh.so
не помогает. В интернетах не много информации о том как подружить Оракл с FreeBSD, но большая её часть уже не очень актуальна, такое ощущение, что раньше, с точки зрения поддержки этой базы данных было лучше, а теперь совсем туго:(

php7+oci8

Добавлено: 2019-03-05 22:51:59
Alex Keda
всегда было хреново
теперь же - совсем никак =(

php7+oci8

Добавлено: 2019-03-07 9:31:49
kharkov_max
Тоже был мелкий сайт на php для бд оркле. Если верно помню то с версии php5.2 osi перестали поддерживать. Промучался с вариантами и переписал сайт на java... Там все работает...