Jawabannya adalah replikasi artikel ini (dalam bahasa Rusia) yang pada gilirannya didasarkan pada posting ini dengan beberapa koreksi. Setelah beberapa hari pencarian tanpa hasil, itu bekerja dengan lancar untuk saya.
Prasyarat:
Anda harus memiliki hak administrator
Anda harus menginstal php5 dengan paket-paket berikut:
sudo apt-get install php5 php5-dev php-pear php5-cli
sudo pecl install pdo
Anda harus menginstal pustaka libaio1:
sudo apt-get install libaio1
Instalasi Oracle Instant Client
Unduh klien instan Oracle untuk arsitektur prosesor dan OS Anda dari situs web Oracle (oracle.com/technetwork/database/features/instant-client/index-097480.html).
Untuk Linux ada 2 pilihan klien instan:paket RPM untuk Linux, CentOS, Fedora, Red Hat Enterprise Linux, Mandriva Linux, SUSE Linux, dll. Arsip ZIP — untuk semua yang tidak mendukung RPM.
Ada 2 file yang harus didownload:
instantclient-basic — klien instan Oracle itu sendiri
instantclient-sdk — kumpulan perpustakaan untuk pengembangan aplikasi
Buat direktori untuk klien instan Oracle ( /opt direktori dicadangkan untuk ekstensi perangkat lunak cocok untuk tujuan ini):
sudo mkdir -p /opt/oracle/
Pindahkan file yang diunduh ke /opt/Oracle dan alihkan ke folder tujuan (dengan asumsi Anda mengunduh arsip "zip" ke direktori "unduhan" pengguna Anda):
sudo mv ~/downloads/instantclient-*.zip /opt/oracle/
cd /opt/oracle/
Mengekstrak arsip yang diunduh:
sudo unzip instantclient-basic-*-*.zip
sudo unzip instantclient-sdk-*-*.zip
Akhirnya kami memiliki instantclient_11_2
direktori yang dibuat di /opt/oracle
untuk klien instan Oracle 11.2.0.2.0. Ganti nama direktori ini menjadi instantclient
(perhatikan nomor versi) dan beralih ke sana:
sudo mv instantclient_11_2 instantclient
cd instantclient
Selanjutnya kita harus membuat beberapa direktori dan symlink tambahan (perhatikan nomor versi):
sudo ln -s /opt/oracle/instantclient/libclntsh.so.* /opt/oracle/instantclient/libclntsh.so
sudo ln -s /opt/oracle/instantclient/libocci.so.* /opt/oracle/instantclient/libocci.so
sudo ln -s /opt/oracle/instantclient/ /opt/oracle/instantclient/lib
sudo mkdir -p include/oracle/11.2/
cd include/oracle/11.2/
sudo ln -s ../../../sdk/include client
cd -
sudo mkdir -p lib/oracle/11.2/client
cd lib/oracle/11.2/client
sudo ln -s ../../../ lib
cd -
Buat file konfigurasi yang berisi nama direktori tempat perpustakaan klien instan Oracle akan dicari dan aktifkan:
echo /opt/oracle/instantclient/ | sudo tee -a /etc/ld.so.conf.d/oracle.conf
sudo ldconfig
Sejauh tidak ada direktori /usr/include/php
di Ubuntu, tetapi klien masih mencarinya, kami akan membuat symlink yang setara - php5:
sudo ln -s /usr/include/php5 /usr/include/php
Pemasangan OCI8
Setelah tindakan sebelumnya, ekstensi oci8 diinstal dengan pecl
perintah:
sudo pecl install oci8
Anda akan dimintai jalur ke klien instan Oracle, tanggapi dengan:
instantclient,/opt/oracle/instantclient
Membuat file koneksi ekstensi:
echo "; configuration for php oci8 module" | sudo tee /etc/php5/conf.d/oci8.ini
echo extension=oci8.so | sudo tee -a /etc/php5/conf.d/oci8.ini
Pemasangan PDO_OCI
Untuk instalasi PDO_OCI, unduh dari repositori pir (pear.php.net).
Perbarui daftar paket pir:
sudo pecl channel-update pear.php.net
Unduh dan tempatkan arsip ke direktori temp:
sudo mkdir -p /tmp/pear/download/
cd /tmp/pear/download/
sudo pecl download pdo_oci
Ekstrak konten arsip:
sudo tar xvf PDO_OCI*.tgz
cd PDO_OCI*
Di sini kita harus mengubah config.m4
file karena tidak berisi informasi tentang versi klien instan Oracle kami. Buka file dan tambahkan perubahan yang ditandai dengan "+" (perhatikan nomor versi):
sudo vim config.m4
Di bawah ini adalah diff
dari 2 file:
***************
*** 7,12 ****
--- 7,14 ----
if test -s "$PDO_OCI_DIR/orainst/unix.rgs"; then
PDO_OCI_VERSION=`grep '"ocommon"' $PDO_OCI_DIR/orainst/unix.rgs | sed 's/[ ][ ]*/:/g' | cut -d: -f 6 | cut -c 2-4`
test -z "$PDO_OCI_VERSION" && PDO_OCI_VERSION=7.3
+ elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
+ PDO_OCI_VERSION=11.2
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.10.1; then
PDO_OCI_VERSION=10.1
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.9.0; then
***************
*** 119,124 ****
--- 121,129 ----
10.2)
PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
;;
+ 11.2)
+ PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
+ ;;
*)
AC_MSG_ERROR(Unsupported Oracle version! $PDO_OCI_VERSION)
;;
***************
Siapkan lingkungan untuk ekstensi php dengan phpize
(php.net/manual/ru/install.pecl.phpize.php) perintah:
sudo phpize
Konfigurasikan penginstal paket dan instal paket (perhatikan nomor versi):
sudo ./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient/,11.2
sudo make
sudo make install
Buat file koneksi untuk itu:
echo "; configuration for php PDO_OCI module" | sudo tee /etc/php5/conf.d/pdo_oci.ini
echo extension=pdo_oci.so | sudo tee -a /etc/php5/conf.d/pdo_oci.ini
Mulai ulang apache dan periksa apakah ekstensi telah dipasang:
sudo /etc/init.d/apache2 restart
php -m