Установка OCI8 с PHP 5.6 на centOs (бродяга) - PullRequest
0 голосов
/ 02 апреля 2019

Из моего понимания и из предыдущих установок, чтобы установить oci8 с php 5.6 на centOs, мне нужно выполнить следующие шаги:

  • Установить oracle-instantclient11.2-basic и oracle-instantclient11.2-devel с RPM.
  • Установить расширение oci8 php с pecl.
  • Добавить расширение к php.ini.

Это то, что я сделал в моем файле обеспечения.

installOracleInstantClient() {
  # ===================================================================
  # Install Oracle Support for PHP
  # ===================================================================
  if [ $(rpm -qa | grep -c 'oracle-instantclient') -eq 0 ]; then
    printLog 'Installing Oracle Client'
    yum --quiet -y install libaio

    yum -y --nogpgcheck --quiet install /opt/packages/oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
    yum -y --nogpgcheck --quiet install /opt/packages/oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

    cat > /etc/environment <<EOM
ORACLE_HOME="/usr/lib/oracle/11.2/client64"
LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib"
EOM

    cat > /etc/profile.d/oracle.sh <<EOM
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
EOM

    export ORACLE_HOME=/usr/lib/oracle/11.2/client64
    export PATH=$PATH:$ORACLE_HOME/bin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib
    export TNS_ADMIN=$ORACLE_HOME/network/admin


    mkdir -p /usr/lib/oracle/11.2/client64/network/admin -p
  fi
}

installPHP() {
  if [ $(rpm -qa | grep -c 'php') -eq 0 ]; then
    printLog 'Installing PHP'

    installGcc;

    installEPEL;

    installGit;

    printLog 'Adding php5.6 repositories'

    rpm -Uvh http://vault.centos.org/7.0.1406/extras/x86_64/Packages/epel-release-7-5.noarch.rpm
    rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

    yum install yum-utils

    printLog 'installing php packages'
    yum --enablerepo=remi,remi-php56 install --quiet -y php php-common php-cli php-pear php-pdo php-devel php-ldap php-mbstring php-bcmath php-mysqlnd php-soap php-gd php-xml php-simplexml php-curl php-zip php-oci8 php-ldap php-zip php-fileinfo

    # php-mssql php-sqlite php-mcrypt

    printLog 'Installing OCI8 extension for PHP'
    printf "instantclient,/usr/lib/oracle/11.2/client64" | pecl install oci8-2.0.12

    # bits to add oci to php.ini
    echo 'extension=oci8.so' >> /etc/php.ini

    sudo sh -c "echo /usr/lib/oracle/11.2/client64 > /etc/ld.so.conf.d/oracle.conf"
    sudo ldconfig

  fi
}

installOracleInstantClient;
installPHP;

При подготовке машины я получаю следующие ошибки:

default: PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/oci8.so' - libclntsh.so.18.1: cannot open shared object file: No such file or directory in Unknown on line 0

default: PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_oci.so' - libclntsh.so.18.1: cannot open shared object file: No such file or directory in Unknown on line
 0 

То же самое, когда я ssh в машину и выполняю php -v.

Выполнение ldd -r /usr/lib64/php/modules/oci8.so возвращает набор ошибок Undefined symbol и ожидаемую строку libclntsh.so.18.1 => not found.

Кроме того, php -i не возвращает блок OCI8, который обычно отображается, когда oci8 работает правильноустановлен.

Есть идеи, что я делаю не так?

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Используя репозиторий "remi-php56", вам не нужно создавать расширение из исходников, все находится в репозитории;)

  • php-oci8 , что обеспечивает oci8 версии 2.0.12 и pdo_oci8

(команда pecl устанавливает только расширение oci8, а не драйвер PDO)

Пакеты создаются с использованием Oracle Client 18c и позволяют подключаться к серверам версий 18c, 12.2, 12.1 и 11.2.

0 голосов
/ 02 апреля 2019

Вам необходимо установить клиент Oracle 18c.Я попытался установить клиенты 11.2 и создать символическую ссылку, но это не работает.

more /etc/ld.so.conf.d/oracle.conf 
/u01/app/oracle/product/18.5.0


# ldd /usr/lib64/php/modules/oci8.so
linux-vdso.so.1 =>  (0x00007ffe2b368000)
libclntsh.so.18.1 => /u01/app/oracle/product/18.5.0/libclntsh.so.18.1 (0x00007f6bf18c3000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6bf14f6000)
libmql1.so => /u01/app/oracle/product/18.5.0/libmql1.so (0x00007f6bf1296000)
libipc1.so => /u01/app/oracle/product/18.5.0/libipc1.so (0x00007f6bf0e24000)
libnnz18.so => /u01/app/oracle/product/18.5.0/libnnz18.so (0x00007f6bf06cf000)
libons.so => /u01/app/oracle/product/18.5.0/libons.so (0x00007f6bf047f000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f6bf027b000)
libm.so.6 => /lib64/libm.so.6 (0x00007f6beff79000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6befd5d000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f6befb43000)
librt.so.1 => /lib64/librt.so.1 (0x00007f6bef93b000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f6bef739000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f6bef520000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6bf5aab000)
libclntshcore.so.18.1 => /u01/app/oracle/product/18.5.0/libclntshcore.so.18.1 (0x00007f6beef3d000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6beed27000)
...