Расширение 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
Спасибо.
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
Спасибо @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 еще раз, чтобы установить эти.