php4+oci8 problem

2 отговора 73 прегледа
#1

php4+oci8 problem

Значи имам 2 машини - едната на win2k, на която има Oracle сървър и една на Linux, на която целта е да се пусне php script за репликация на Oracle данните във една PostgreSQL база.

Допреди време всичко си беше като хората. Линукската машина си беше на Debian, php executable-то си беше build-нато с oci8 support и всичко си ставаше като хората. Докато хората не решиха да сменят линукската машина с по-бърза такава. Ta по-бързата такава си имаше един много странен RAID контролер, за който имаше единствено компилирани kernel modules...за някакъв странен kernel, който идва с redhat 8.0....

Това наложи новата машина да бъде на Редхат. Оттам цялата галимация наново - инсталирах JRE, Oracle 9 клиент, компилирах php с oci8 support, копирах старите скриптове за репликацията....и БУМ изненада!

Репликацията си върви идеално, таблиците се вземат от oracle-a, отиват си в pgsql-a, с изключение на тези, които имат field-ове с данни на кирилица. Кирилицата просто не отива в pgsql таблиците. Отначало реших че е някакъв тъп проблем с locales, но не - впоследствие установих, че все пак има някои таблици, в които кирилицата си е наред.

Реших че е проблем на php binary-to. Прекомпилирах няколко версии на PHP, пробвах с oracle client libs 8 и 9. В доста случаи компилираното binary даваше segfault. Ако не segfault-не, то неизменно половината таблици с кирилица биват прецакани.

Какво ли не правих. Пробвах с прекомпилирани на други машини php binary-ta, играл съм си доволно много. По едно време реших, че проблема на тъпия RedHat e в старото му libc. Сложих му по-нов glibc, обаче ефекта нулев.

php binary-to според ldd зависи от следните shared libs:

libcrypt, libpq3, libresolv, libm, libdl, libnsl, libc, libpthread, както и от 2-те .so-та на Oracle клиент-а : libclntsh и libwtc.

Няма да ви казвам че съм си играл да сменям версиите и на гореизброените библиотеки. Но резултата остава същия: или segfault или прецакани field-ове на кирилица.

Не знам вече какво да правя, ще се превърна в някво зомби накрая, вярвайте ми отчаян съм !!!!

Някой от вас случайно да има някаква идея какво по дяволите бъркам?!? Защо Господ ме наказва по такъв шибан начин. HEEELP !

Spice extends life,spice expands consciousness.Spice is vital to space travel.Travel without moving.
Отговор
в отговор на gat3way #2

Re: php4+oci8 problem

ами значи не съм много цъкал с oracle, но когато си стартирам apache в стартиращият скрипт съм му сложил в environment-а да се зареждат тези променливи

ENV="env -i LANG=C PATH=/bin:/usr/bin:/sbin:/usr/sbin ORACLE_HOME=/opt/oracle/OraHome1 NLS_LANG=BULGARIAN_BULGARIA.CL8MSWIN1251"

по-специално NLS_LANG, може да ти трябва и друг енкодинг, може и да не е това проблема, ама да си кажа

Отговор
в отговор на phpGuru #3

Re: php4+oci8 problem

проблема наистина се оказа с енкодинга накрая...мерси ;)

Отговор