Welcome to PHPClub
В эти выходные на LinuxFest v.12! Поляна от PHPClubа Мастер-классы по Javascript, AJAX/COMET, jQuery!
Боишься нашего дизайна?
поиск:
   
 Начало | Настройки | Расширенный поиск | РегистрацияПосмотреть новые сообщения 
  
PHP Club форумы: > PHP и базы данных > PHP & Oracle > Проблема конфигурации PHP 5.2.3 c PDO + OIC 10_2
 

Автор
Тема ОТВЕТИТЬ
BlackTheMad
Новичок

На форуме с: May 2005
Cообщений: 11
Город: Moscow, Russia
Проблема конфигурации PHP 5.2.3 c PDO + OIC 10_2

У меня возникли проблемы при конфигурировании PHP 5.2.3 драйверами для Oracle.
Я использовал Oracle Instant Client 10.2 и вдумчиво читал "The Underground PHP and Oracle® Manual".

Такая конфигурация:
./configure \
--prefix=/u01/users/php/php5 \
--with-apxs2=/u01/users/php/apache2/bin/apxs \
--with-oci8=instantclient,/u01/users/php/instantclient_10_2 \
--enable-pdo

проходит успешно. Всё находится и ставится.

НО! Если добавить по вышеуказанному мануалу:
./configure \
--prefix=/u01/users/php/php5 \
--with-apxs2=/u01/users/php/apache2/bin/apxs \
--with-oci8=instantclient,/u01/users/php/instantclient_10_2 \
--enable-pdo \
--with-pdo-oci=instantclient,/u01/users/php/instantclient_10_2,10.2.0.3

то OCI8 продолжает конфигурироваться нормально и все находит, хотя странно определяет версию клиента
checking for Oracle (OCI8) support... yes
checking PHP version... 5.2.3, ok
checking Oracle Instant Client directory... /u01/users/php/instantclient_10_2
checking Oracle Instant Client SDK header directory... /u01/users/php/instantclient_10_2/sdk/include
checking Oracle Instant Client version... 10.1

А вот PDO-OCI совершенно не хочет находить библиотеки.
checking Oracle OCI support for PDO... yes
checking Oracle Install-Dir... instantclient,/u01/users/php/instantclient_10_2,10.2.0.3 :instantclient,/u01/users/php/instantclient_10_2,10.2.0.3:
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... ./configure: !: not found
configure: error: Oracle (OCI8) required libraries not found

Я не сильно разбираюсь в bash-скриптинге, но такое ощущение, что он не распознает путь и пытается искать в папках lib32, lib и прочих.

Должен упомянуть, что собираю я под SunOS server 5.9 Generic_118558-35 sun4u sparc SUNW,Sun-Fire-V490
Без прав администратора. Под Apache 2.0.59.

Так же должен упомянуть, что на сервере есть установленный Oracle Client (не уверен), и с путями по умолчанию, т.е. с родными $ORACLE_HOME он конфигурируется, хотя со странностями:

checking for Oracle (OCI8) support... yes
checking PHP version... 5.2.3, ok
checking Oracle Install Directory... /u01/oracle/9.2.0
checking size of long int... 4
checking if we're on a 64-bit platform... no
checking OCI8 libraries dir... ./configure: !: not found
lib32

checking Oracle version... 9.0
checking for OCIEnvNlsCreate in -lclntsh... yes
checking for OCINlsCharSetNameToId in -lclntsh... yes
checking for OCIEnvCreate in -lclntsh... yes
checking for OCIStmtPrepare2 in -lclntsh... yes
checking for OCILobRead2 in -lclntsh... no
checking for OCILobIsTemporary in -lclntsh... yes
checking for OCICollAssign in -lclntsh... yes


В обоих случая одно и то же. Но для меня это не приемлимо, т.к. доступа к этому клиенту я не имею, и следовательно не смогу настроиться на нужный мне сервер без лишних проблем.
Думаю, может положить библиотеки оракловые в папочку lib.

Заранее благодарю.

Отредактировано BlackTheMad 13.08.07 в 16:07

Old Post 13.08.07 15:52 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
tony2001
TeaM PHPClub

На форуме с: Jun 2000
Cообщений: 8777
Город: msk.ru/kh.ua

>--with-oci8=instantclient,/u01/users/php/instantclient_10_2

./configure --help говорит указывать путь к библиотекам OIC:
 

--with-oci8[=DIR] Include Oracle (OCI8) support. DIR defaults to $ORACLE_HOME.
Use --with-oci8=instantclient,/path/to/oic/lib


>checking OCI8 libraries dir... ./configure: !: not found
>lib32

под Солярис shell всегда был кривой до нельзя.
смотри ext/oci8/config.m4 строка 39 или строка 41:
http://lxr.php.net/source/php-src/ext/oci8/config.m4#39
http://lxr.php.net/source/php-src/ext/oci8/config.m4#41

какая-то из двух этих строк ему не нравится, какая - не знаю.
выяснишь - скажи мне, я исправлю.

Отредактировано tony2001 13.08.07 в 16:26

Old Post 13.08.07 16:22 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
BlackTheMad
Новичок

На форуме с: May 2005
Cообщений: 11
Город: Moscow, Russia

 
Автор оригинала: tony2001
>--with-oci8=instantclient,/u01/users/php/instantclient_10_2

./configure --help говорит указывать путь к библиотекам OIC:
--with-oci8[=DIR] Include Oracle (OCI8) support. DIR defaults to $ORACLE_HOME.
Use --with-oci8=instantclient,/path/to/oic/lib


в OIC нет подпапок. Все библиотеки лежат непосредственно в instantclient_10_2/, а заголовки лежат в instantclient_10_2/sdk/include.
Попытался обмануть конфигуратор, уложив файлы библиотек в папку instantclient_10_2/lib. Конфигуратор съел, но make уже не прошел.
С OCI8 у меня нет проблем. Он конфигурируется и собирается.
У меня проблемы с PDO_OCI. Оне не хочет даже конфигурироваться.

Old Post 13.08.07 16:55 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
tony2001
TeaM PHPClub

На форуме с: Jun 2000
Cообщений: 8777
Город: msk.ru/kh.ua

что я не так делаю, почему у меня всё работает?
--with-pdo-oci=instantclient,/tmp/oic_10_2,10.2.1.3

по-моему, это всё-таки твой шелл, который не способен выполнить те же строки, что и в oci8/config.m4, только в pdo_oci/config.m4.

Old Post 13.08.07 18:52 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
BlackTheMad
Новичок

На форуме с: May 2005
Cообщений: 11
Город: Moscow, Russia

Да я верю в нестандартность Соляриса =)
Я с ней уже насталкивался пока собирал все зависимости.
Мне бы какое-нибудь решение. Можно ли собрать нормальный sh, чтобы всё было в порядке?

-~{}~ 14.08.07 13:03:

Заменил #! /bin/sh на #! /bin/bash.
Всё сконфигурировалось успешно. Правда не собирается, но это уже не по вине OCI.
Спасибо, tony2001, за подсказку про кривой шел.

Old Post 14.08.07 08:11 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
tony2001
TeaM PHPClub

На форуме с: Jun 2000
Cообщений: 8777
Город: msk.ru/kh.ua

отлично.
пожелание остаётся актуальным:
 

какая-то из двух этих строк ему не нравится, какая - не знаю.
выяснишь - скажи мне, я исправлю.


Old Post 14.08.07 10:11 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
BlackTheMad
Новичок

На форуме с: May 2005
Cообщений: 11
Город: Moscow, Russia

 
пожелание остаётся актуальным:


Прогнал вот это скрипт


#!bin/sh
OCI8_DIR="/u01/oracle/9.2.0"
if test -d "$OCI8_DIR/lib" -a ! -d "$OCI8_DIR/lib32"; then
OCI8_LIB_DIR=lib
elif ! test -d "$OCI8_DIR/lib" -a -d "$OCI8_DIR/lib32"; then
OCI8_LIB_DIR=lib32
elif test -d "$OCI8_DIR/lib" -a -d "$OCI8_DIR/lib32"; then
OCI8_LIB_DIR=$TMP_OCI8_LIB_DIR
else
{ echo "configure: error: Oracle (OCI8) required libraries not found" 1>&2; exit 1; }
fi
echo $OCI8_LIB_DIR


Скрипт ведет себя нездорово. Если закомментировать

elif ! test -d "$OCI8_DIR/lib" -a -d "$OCI8_DIR/lib32"; then
OCI8_LIB_DIR=lib32

(http://lxr.php.net/source/php-src/ext/oci8/config.m4#41), то ведет становится лучше. Он просто ничего не находит, а не выкидывает !: not found
Так что, видимо, это 41 строка.

Old Post 14.08.07 12:32 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
tony2001
TeaM PHPClub

На форуме с: Jun 2000
Cообщений: 8777
Город: msk.ru/kh.ua

гут.
логика кода "elif ! test -d "$OCI8_DIR/lib" -a -d "$OCI8_DIR/lib32"; then" понятна?
попробуй его модифицировать так, чтобы сановский шелл его выполнил нормально.

например, вот так:

code:
if test ! -d "blah" && test ! -d "blahblah"; then echo "hello sun"; fi

Old Post 14.08.07 12:43 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
BlackTheMad
Новичок

На форуме с: May 2005
Cообщений: 11
Город: Moscow, Russia

 

гут. логика кода "elif ! test -d "$OCI8_DIR/lib" -a -d "$OCI8_DIR/lib32"; then" понятна?
попробуй его модифицировать так, чтобы сановский шелл его выполнил нормально.


Логика кода понятна лишь интуитивно. Но если заменить эти две строчки на

code:
elif test ! -d "$OCI8_DIR/lib" && test ! -a -d "$OCI8_DIR/lib32"; then OCI8_LIB_DIR=lib32


То скрипт ведёт себя так же, как и без них. Т.е. ничего не выводит.

Old Post 14.08.07 12:51 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
tony2001
TeaM PHPClub

На форуме с: Jun 2000
Cообщений: 8777
Город: msk.ru/kh.ua

это что выводит ?

code:
if test ! -d "blah" && test ! -d "blahblah"; then echo "hello sun"; fi


 

elif test ! -d "$OCI8_DIR/lib" && test ! -a -d "$OCI8_DIR/lib32"; then


"-a" тут лишнее, я уже поменял -a на "&& test"

Old Post 14.08.07 13:03 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
BlackTheMad
Новичок

На форуме с: May 2005
Cообщений: 11
Город: Moscow, Russia

code:
hello sun
выводит.
Old Post 14.08.07 13:05 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
tony2001
TeaM PHPClub

На форуме с: Jun 2000
Cообщений: 8777
Город: msk.ru/kh.ua

ок, спасибо.
исправлено, будет в 5.2.4.

Отредактировано tony2001 14.08.07 в 13:10

Old Post 14.08.07 13:06 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
micbox
Новичок

На форуме с: Dec 2006
Cообщений: 1
Город:

Я тут два месяца мучился с этой дурацкой опцией. Заменил /bin/sh на /bin/bash и все четко сработало. Молодцы, ребята. Спасибо.

Old Post 22.08.07 11:51 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
tony2001
TeaM PHPClub

На форуме с: Jun 2000
Cообщений: 8777
Город: msk.ru/kh.ua

попробуй 5.2.4 RC2.

Old Post 22.08.07 13:52 URL сообщения | инфо об авторе | жалоба | IP: Записан | редактировать | ОТВЕТИТЬ и ЦИТИРОВАТЬ
Время GMT. Текущее время 23:15. Подписаться на Тему | Версия для Печати
 

PHP Club форумы: > PHP и базы данных > PHP & Oracle > Проблема конфигурации PHP 5.2.3 c PDO + OIC 10_2
 
Оценить:
 
 
 
 

 © 1997-2010 PHPClubTeam      

Powered by vBulletin Copyright © 2000-2010 Jelsoft Enterprises Limited.