Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để cài đặt oracle Instantclient và pdo_oci trên máy ubuntu?

Câu trả lời là một bản sao của bài báo này (bằng tiếng Nga), lần lượt dựa trên bài đăng này với một số chỉnh sửa. Sau nhiều ngày tìm kiếm không có kết quả, nó hoạt động trơn tru đối với tôi.

Điều kiện tiên quyết:

Bạn phải có đặc quyền của quản trị viên

Bạn nên cài đặt php5 với các gói sau:

sudo apt-get install php5 php5-dev php-pear php5-cli
sudo pecl install pdo

Bạn nên cài đặt thư viện libaio1:

sudo apt-get install libaio1

Cài đặt Oracle Instant Client

Tải xuống ứng dụng khách tức thì Oracle cho kiến ​​trúc bộ xử lý và hệ điều hành của bạn từ trang web Oracle (oracle.com/technetwork/database/features/instant-client/index-097480.html).

Đối với Linux, có 2 tùy chọn của ứng dụng khách tức thì:gói RPM cho Linux, CentOS, Fedora, Red Hat Enterprise Linux, Mandriva Linux, SUSE Linux, v.v. Kho lưu trữ ZIP - cho tất cả các gói khác không hỗ trợ RPM.

Có 2 tệp được tải xuống:

Instantclient-basic - Bản thân ứng dụng khách tức thì của Oracle

Instantclient-sdk - bộ thư viện để phát triển ứng dụng

Tạo thư mục cho máy khách tức thì Oracle (/ opt thư mục dành riêng cho các phần mở rộng phần mềm rất phù hợp cho mục đích này):

sudo mkdir -p /opt/oracle/

Di chuyển các tệp đã tải xuống đến / opt / oracle và chuyển sang thư mục đích (giả sử rằng bạn đã tải các tệp lưu trữ "zip" xuống thư mục "tải xuống" của người dùng):

sudo mv ~/downloads/instantclient-*.zip /opt/oracle/
cd /opt/oracle/

Giải nén các kho lưu trữ đã tải xuống:

sudo unzip instantclient-basic-*-*.zip
sudo unzip instantclient-sdk-*-*.zip

Cuối cùng, chúng tôi có instantclient_11_2 thư mục được tạo trong /opt/oracle cho máy khách tức thì Oracle 11.2.0.2.0. Đổi tên thư mục này thành instantclient (chú ý đến số phiên bản) và chuyển sang nó:

sudo mv instantclient_11_2 instantclient
cd instantclient

Tiếp theo, chúng ta sẽ phải tạo thêm một số thư mục và liên kết tượng trưng (chú ý đến số phiên bản):

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 -

Tạo tệp cấu hình chứa tên thư mục nơi các thư viện ứng dụng khách tức thì của Oracle được tìm kiếm và kích hoạt nó:

echo /opt/oracle/instantclient/ | sudo tee -a /etc/ld.so.conf.d/oracle.conf
sudo ldconfig

Theo như không có thư mục /usr/include/php trong Ubuntu, nhưng máy khách vẫn đang tìm kiếm nó, chúng tôi sẽ tạo liên kết tượng trưng cho nó tương đương - php5:

sudo ln -s /usr/include/php5 /usr/include/php

Cài đặt OCI8

Sau khi các hành động trước đó, tiện ích mở rộng oci8 được cài đặt với pecl lệnh:

sudo pecl install oci8

bạn sẽ được nhắc về đường dẫn đến ứng dụng khách tức thì Oracle, hãy trả lời bằng:

instantclient,/opt/oracle/instantclient

Tạo tệp kết nối tiện ích mở rộng:

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

Cài đặt PDO_OCI

Để cài đặt PDO_OCI, hãy tải xuống từ kho lưu trữ lê (Pear.php.net).

Cập nhật danh sách gói lê:

sudo pecl channel-update pear.php.net

Tải xuống và đặt kho lưu trữ vào thư mục tạm thời:

sudo mkdir -p /tmp/pear/download/
cd /tmp/pear/download/
sudo pecl download pdo_oci

Trích xuất nội dung kho lưu trữ:

sudo tar xvf PDO_OCI*.tgz
cd PDO_OCI*

Ở đây, chúng ta sẽ phải cải tiến config.m4 vì nó không chứa thông tin về phiên bản ứng dụng khách tức thì Oracle của chúng tôi. Mở tệp và thêm các thay đổi được đánh dấu bằng "+" (trả tiền cho số phiên bản):

sudo vim config.m4

Dưới đây là diff trong số 2 tệp:

***************
*** 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)
;;
***************

Chuẩn bị môi trường cho phần mở rộng php với phpize (php.net/manual/ru/install.pecl.phpize.php) lệnh:

sudo phpize

Định cấu hình trình cài đặt gói và cài đặt gói (chú ý đến số phiên bản):

sudo ./configure --with-pdo-oci=instantclient,/opt/oracle/instantclient/,11.2
sudo make
sudo make install

Tạo tệp kết nối cho nó:

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

Khởi động lại apache và kiểm tra xem các tiện ích mở rộng đã được cài đặt chưa:

sudo /etc/init.d/apache2 restart
php -m


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách xuất bảng trống trong oracle

  2. Trong trình kích hoạt Oracle, tôi có thể gán mới và cũ cho một biến kiểu hàng không?

  3. Kết quả không có thứ tự trong SQL

  4. Nối các nút XMLType trong truy vấn Oracle

  5. Oracle PLS-00363:không thể sử dụng biểu thức '' làm mục tiêu gán