# USE="oci8 ldap" emerge php (Полез искать ldap в /opt/oracle)

## Mikola Zakobrezki

Имеется

```

dev-lang/php          -mssql -mysql  oci8 apache2 berkdb bzip2 calendar cgi cli crypt ctype curl dbase ftp gd gdbm hash iconv imap inifile kerberos ldap mhash ncurses nls  pcre pic posix postgres readline session snmp sockets spell spl ssl sysvipc threads truetype unicode xml xmlreader xmlwriter xpm xsl zip zlib doc

```

```

ORACLE_BASE=/opt/oracle

ORACLE_HOME=/opt/oracle/10.2.0

ORACLE_SID=BORA

ORACLE_TERM=xterm

ORACLE_OWNER=oracle

TNS_ADMIN=/opt/oracle/10.2.0/network/admin

ORA_NLS10=/opt/oracle/10.2.0/nls/data

NLS_LANG=RUSSIAN_RUSSIA.UTF8

NLS_LANGUAGE=RUSSIAN

NLS_TERRITORY=RUSSIA

CLASSPATH=/opt/oracle/10.2.0/jdbc/lib/classes12.zip

#LD_LIBRARY_PATH=/opt/oracle/10.2.0/lib

#DISABLE_HUGETLBFS=1

PATH=/opt/oracle/10.2.0/bin

ROOTPATH=/opt/oracle/10.2.0/bin

#LDPATH="/opt/oracle/10.2.0/lib"

#TZ=GMT

```

делаю emerge php

конфиг вываливается с сообщением cannot find ldap.h

Детальное изучение config.log показало следующее:

 *Quote:*   

> 
> 
>   $ ./configure --prefix=/usr/lib/php5 --host=i686-pc-linux-gnu --mandir=/usr/lib/php5/man --infodir=/usr/lib/php5/info --sysconfdir=/etc --cache-file=./config.cache --enable-cli --disable-cgi --with-config-file-path=/etc/php/cli-php5 --with-config-file-scan-dir=/etc/php/cli-php5/ext-active --without-pear --enable-bcmath --with-bz2 --enable-calendar --with-curl --without-curlwrappers --enable-dbase --disable-exif --without-fbsql --without-fdftk --disable-filter --enable-ftp --with-gettext --with-gmp --disable-ipv6 --disable-json --with-kerberos=/usr --enable-mbstring --with-mcrypt --with-mhash --without-msql --with-mssql --with-ncurses --with-openssl --with-openssl-dir=/usr --disable-pcntl --disable-pdo --with-pgsql --with-pspell --without-recode --disable-simplexml --disable-shmop --with-snmp --enable-soap --enable-sockets --without-sybase --without-sybase-ct --disable-sysvmsg --disable-sysvsem --disable-sysvshm --without-tidy --disable-tokenizer --disable-wddx --disable-xmlreader --disable-xmlwriter --without-xmlrpc --without-xsl --enable-zip --with-zlib --disable-debug --enable-dba --with-cdb --with-db4 --without-flatfile --with-gdbm --with-inifile --without-qdbm --with-freetype-dir=/usr --with-t1lib=/usr --disable-gd-jis-conv --with-jpeg-dir=/usr --with-png-dir=/usr --with-xpm-dir=/usr --with-gd --with-imap --with-imap-ssl --with-ldap=/opt/oracle/10.2.0 --without-mysqli --with-unixODBC=/usr --without-adabas --without-birdstep --without-dbmaker --without-empress --without-esoob --without-ibm-db2 --without-iodbc --without-sapdb --without-solid --with-oci8 --with-readline --without-libedit --without-mm --without-sqlite
> 
> CONFIGURE_COMMAND=' '\''./configure'\''  '\''--prefix=/usr/lib/php5'\'' '\''--host=i686-pc-linux-gnu'\'' '\''--mandir=/usr/lib/php5/man'\'' '\''--infodir=/usr/lib/php5/info'\'' '\''--sysconfdir=/etc'\'' '\''--cache-file=./config.cache'\'' '\''--enable-cli'\'' '\''--disable-cgi'\'' '\''--with-config-file-path=/etc/php/cli-php5'\'' '\''--with-config-file-scan-dir=/etc/php/cli-php5/ext-active'\'' '\''--without-pear'\'' '\''--enable-bcmath'\'' '\''--with-bz2'\'' '\''--enable-calendar'\'' '\''--with-curl'\'' '\''--without-curlwrappers'\'' '\''--enable-dbase'\'' '\''--disable-exif'\'' '\''--without-fbsql'\'' '\''--without-fdftk'\'' '\''--disable-filter'\'' '\''--enable-ftp'\'' '\''--with-gettext'\'' '\''--with-gmp'\'' '\''--disable-ipv6'\'' '\''--disable-json'\'' '\''--with-kerberos=/usr'\'' '\''--enable-mbstring'\'' '\''--with-mcrypt'\'' '\''--with-mhash'\'' '\''--without-msql'\'' '\''--with-mssql'\'' '\''--with-ncurses'\'' '\''--with-openssl'\'' '\''--with-openssl-dir=/usr'\'' '\''--disable-pcntl'\'' '\''--disable-pdo'\'' '\''--with-pgsql'\'' '\''--with-pspell'\'' '\''--without-recode'\'' '\''--disable-simplexml'\'' '\''--disable-shmop'\'' '\''--with-snmp'\'' '\''--enable-soap'\'' '\''--enable-sockets'\'' '\''--without-sybase'\'' '\''--without-sybase-ct'\'' '\''--disable-sysvmsg'\'' '\''--disable-sysvsem'\'' '\''--disable-sysvshm'\'' '\''--without-tidy'\'' '\''--disable-tokenizer'\'' '\''--disable-wddx'\'' '\''--disable-xmlreader'\'' '\''--disable-xmlwriter'\'' '\''--without-xmlrpc'\'' '\''--without-xsl'\'' '\''--enable-zip'\'' '\''--with-zlib'\'' '\''--disable-debug'\'' '\''--enable-dba'\'' '\''--with-cdb'\'' '\''--with-db4'\'' '\''--without-flatfile'\'' '\''--with-gdbm'\'' '\''--with-inifile'\'' '\''--without-qdbm'\'' '\''--with-freetype-dir=/usr'\'' '\''--with-t1lib=/usr'\'' '\''--disable-gd-jis-conv'\'' '\''--with-jpeg-dir=/usr'\'' '\''--with-png-dir=/usr'\'' '\''--with-xpm-dir=/usr'\'' '\''--with-gd'\'' '\''--with-imap'\'' '\''--with-imap-ssl'\'' '\''--with-ldap=/opt/oracle/10.2.0'\'' '\''--without-mysqli'\'' '\''--with-unixODBC=/usr'\'' '\''--without-adabas'\'' '\''--without-birdstep'\'' '\''--without-dbmaker'\'' '\''--without-empress'\'' '\''--without-esoob'\'' '\''--without-ibm-db2'\'' '\''--without-iodbc'\'' '\''--without-sapdb'\'' '\''--without-solid'\'' '\''--with-oci8'\'' '\''--with-readline'\'' '\''--without-libedit'\'' '\''--without-mm'\'' '\''--without-sqlite'\'''
> ...

 

Раньше все апдейты проходили без граблей. Причём всё работало.

как так получиться могло? подскажите что-нибудь?

----------

## zvn

а 

```
echo $PATH
```

 что показывает?

----------

## Mikola Zakobrezki

 *Quote:*   

> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2:/usr/i686-pc-linux-gnu/gcc-bin/4.1.1:/opt/oracle/10.2.0/bin

 

----------

## zvn

смотрим /usr/portage/eclass.php5_2-sapi.eclass 

раньше здесь не было "${ORACLE_HOME}"

phpconfutils_extension_with     "ldap"          "ldap"          1 "${ORACLE_HOME}"

было просто:

phpconfutils_extension_with     "ldap"          "ldap"          1

может, сборку делать так:

ORACLE_HOME="" emerge ... php

----------

## Mikola Zakobrezki

 *zvn wrote:*   

> смотрим /usr/portage/eclass.php5_2-sapi.eclass 
> 
> раньше здесь не было "${ORACLE_HOME}"
> 
> phpconfutils_extension_with     "ldap"          "ldap"          1 "${ORACLE_HOME}"
> ...

 

Ок, проверю сегодня. Отпишусь о результатах.

----------

## Mikola Zakobrezki

что-то я ступил изначально. ORACLE_HOME нужна для выполнения сборки oci8.

так что имеем:

 *Quote:*   

>  *
> 
>  * You must have the ORACLE_HOME variable set in your environment to
> 
>  * compile the Oracle extension.
> ...

 

----------

## calculator

наверно где-то в /etc/env.d/ смотреть нужно. Попробовать погуглить примерно так.

----------

## zvn

для чего гуглить то?

ведь речь идёт о вызове configure, параметры которого формируются в ebuild-е вызовами из /usr/portage/eclass.php5_2-sapi.eclass, в котором прописано, что если use-флаг ldap и oci8 указан, то сформировать параметр с использованием переменной $ORACLE_HOME, т.е. --with-ldap=$ORACLE_HOME

/usr/portage/eclass.php5_2-sapi.eclass

```

   # LDAP support

   if use ldap || phpconfutils_usecheck ldap ; then

      if use oci8 ; then

         phpconfutils_extension_with   "ldap"      "ldap"      1 "${ORACLE_HOME}"

      else

         phpconfutils_extension_with   "ldap"      "ldap"      1

         phpconfutils_extension_with   "ldap-sasl"   "ldap-sasl"   0

      fi

   fi

```

/usr/portage/phpconfutils.eclass

```

phpconfutils_extension_with() {

   local my_shared

   if [[ "$3" == "1" ]] ; then

      if [[ "${shared}+" != "+" ]] ; then

         my_shared="${shared}"

         if [[ "$4+" != "+" ]] ; then

            my_shared="${my_shared},$4"

         fi

      elif [[ "$4+" != "+" ]] ; then

         my_shared="=$4"

      fi

   else

      if [[ "$4+" != "+" ]] ; then

         my_shared="=$4"

      fi

   fi

   if useq "$2" || phpconfutils_usecheck "$2" ; then

      my_conf="${my_conf} --with-$1${my_shared}"

      einfo "  Enabling $1"

   else

      my_conf="${my_conf} --without-$1"

      einfo "  Disabling $1"

   fi

}

```

надо только понять, почему вдруг при сборке php с ldap и oci8 понадобилось использовать возможности oid, а не openldap. я бы уж погуглил oci8 и sso

А сервер oracle в каком варианте установлен? У меня собралось без проблем.

find . -name ldap.h

./product/10gr2/ldap/public/ldap.h

----------

## Mikola Zakobrezki

Вобщем т.к. надо срочно работать, пока "заткнул" дыру путём копирования из работающего сервера $ORACLE_HOME/ldap в папку клиента. Хотя скорее всего достаточно будет и $ORACLE_HOME/ldap/public/*

Сборка прошла без заметных якорей. Поглядим, как отработает LDAP. 

Ещё отпишусь.

----------

