Расширение PDO OCI PECL/PHP устаревшей. Как поступить?


Нужно установить расширение pdo_oci PHP для работы с базой данных Oracle, via PDO. Однако, я проверил, что расширение доступно через PECL устарела и больше не будет поддерживаться.

как я понимаю link (не знаю если правильно понимаю), в более новых версиях PHP уже приходят с PDO_OCI.

я Хочу знать, как мне поступить, потому что ничего не нашел убедительных. Я использую CentOS 6.6 с PHP 5.6.

ПРИМЕЧАНИЕ: у меня Уже установлен Rpm-пакеты basic и devel ORACLE Instanclient

Спасибо.

Author: jflizandro, 2015-06-27

2 answers

Как ссылка устарела версия PECL, начиная с PHP5.3 это расширение по умолчанию в PHP, и это, может быть, в репозитории PECL было прекращено.

Расширений еще не на сервере, я рекомендую установить с помощью команды:

yum install php-pdo

Установка OCI8 как расширение скомпилирован статически

Настройте PHP include OCI8 usanado одной из следующих строк:

  • , Если вы используете Oracle Instant Client сделайте так:

    ./configure --with-oci8=instantclient,/path/to/instant/client/lib
    
  • , Если вы используете Oracle database or full Oracle Client:

    ./configure --with-oci8=$ORACLE_HOME
    

, После установки, выполните все шаги сборки нормальное, ex: make install

Установка OCI8 как расширение "Shared"

Параметр конфигурации общей строит OCI8 в качестве общей библиотеки, которая может быть динамически загружен в PHP. Строительство общее расширение позволяет OCI8, чтобы быть в курсе легко, не затрагивая остальную часть PHP.

  • , Если вы используете библиотеки "free" Oracle Instant Client":

    ./configure --with-oci8=shared,instantclient,/path/to/instant/client/lib
    

    , Если Instant Client был установлен с помощью ZIP-файлов, создавать ссылки simbolicos во-первых, например: ln -s libclntsh.so.12.1 libclntsh.so

  • , Если вы используете установку на основе RPM Oracle Instant Client:

    ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/<version>/client/lib
    

    , например --with-oci8=shared,instantclient,/usr/lib/oracle/12.1/client/lib

    Обратите Внимание, что начальная поддержка Oracle Instant Client появился в PHP 4.3.11 и 5.0.4, первоначально использовались --with-oci8-instant-client для настройки PHP.

  • , Если вы используете Oracle database или full Oracle Client installation:

    ./configure --with-oci8=shared,$ORACLE_HOME
    

    Убедитесь, что пользователь веб-сервера (nobody, www) имеет доступ к библиотекам, загрузка файлов и tnsnames.ora (если используете) под diretoriio $ORACLE_HOME. С Oracle 10gR2, вы, возможно, потребуется запустить утилиту $ORACLE_HOME/install/changePerm.sh, чтобы дать доступ в справочнике.

Включить php.ini

Включить "Oracle" в PHP вы должны открыть файл php.ini и раскомментировать строку (удалить ; старта):

;extension=pdo.so
;extension=pdo_oci.so
;extension=pdo_oci8.so

Становится так:

extension=pdo.so
extension=pdo_oci.so
extension=pdo_oci8.so

И перезапустить сервер.

, Если OracleInstantClient не "работает", это может быть неправильная версия PHP. Попробуйте скачать его по этой ссылке правильную версию для вашего сервера:

Http://www.oracle.com/technetwork/database/features/instant-client/index-100365.html

, обратите Внимание, расширение PDO PHP экспериментальный:

This extension is EXPERIMENTAL. The behaviour of this extension, including the names of its functions and any other documentation surrounding this extension may change without notice in a future release of PHP. This extension should be used at your own risk.

Из-За этого факта, если возникнут проблемы, возникающие, попробуйте использовать функции oci8.so, см.: Подключения PHP с Oracle

 1
Author: Guilherme Nascimento, 2017-04-13 12:59:40

Спасибо @guilerme-рождение. Удалось установить следующим образом (напомним, что использую CentOs 6.6):

Скачать PHP

$ wget http://ar2.php.net/get/php-5.6.10.tar.gz/from/this/mirror

Распаковки и перейти к распакованной папке

$ tar-xzf php-5.6.10.смолы.gz
$ cd php-5.6.10

Выполнить команду настроить желаемые параметры (ниже моего например)

./configure
--prefix=/usr
--sysconfdir=/etc
--localstatedir=/var
--datadir=/usr/share/php
--mandir=/usr/share/man
--with-config-file-path=/etc
--with-config-file-scan-dir=/etc/php.d
--with-zlib
--enable-bcmath
--with-bz2
--enable-calendar
--with-gdbm
--with-gmp
--enable-ftp
--with-gettext
--enable-mbstring
--with-readline
--with-apxs2
--with-pdo-oci=instantclient,/usr,12.1
--enable-dba=shared
--with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
--with-pdo-pgsql

OBS: на этом этапе могут возникнуть ошибки, из-за зависимостей, которые должны быть установлены перед тем, как db4 и db4-devel. В моем случае, я пошел, выполнив команду, видя, какая зависимость была не дает ошибку. После того, как определили, надевал зависимость (всегда установка также версия, devel каждого пакета) и вот снова, чтобы увидеть следующую зависимость отсутствует. Я сделал это до команды работать без ошибок.

Сборка и установка

$ make && make install

В Этом момент, PHP уже установлен.
Чтобы убедиться, выполните следующую команду:

$ php -v -

, Но перед concluír, мы должны сделать некоторые корректировки...

Скопировать php.ini правильный каталог

В Случае локального сервера
$ cp php.ini-development /etc/php.ini
Случае будьте на производственном сервере
$ cp php.ini-production /etc/php.ini -

Открыть файл конфигурации apache для редактирования

$ vi /etc/httpd/conf/httpd.conf

Добавить строки ниже для Apache интерпретировать PHP

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Сохраните и перезапустите Apache

$ service httpd restart

Готово! Теперь уже должно быть все правильно!

Недостатком этого метода (по крайней мере до где я заметил), что, когда требуется какой-то модуль, как PDO_MYSQL, PDO_PGSQL., не может установить через пакет, так как не будет работать.
Для установки некоторых, может быть через PECL, за исключением тех, которые устарели, как PDO_MYSQL PDO_OCI, где необходимо скомпилировать php еще раз, чтобы установить эти.

 0
Author: jflizandro, 2020-06-11 14:45:34