Kết nối DB ORACLE từ PHP trên CENTOS 7, 8

1079

Bài viết được sự cho phép của tác giả Nguyễn Văn Minh

Để kết nối được đến cơ sở dữ liệu Oracle từ CentOS 7, 8, bạn cần cài đặt Oracle InstantClient. Và bạn cũng cần phần mở rộng OCI8 để gọi từ PHP.

Cài đặt Oracle InstantClient

Với el8 / CentOS 8 / stream / Rocky / Almalinux

Trước hết, cần tải các gói cần thiết.

$ cd /usr/local/src
$ wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-basic-21.5.0.0.0-1.el8.x86_64.rpm
$ wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-sqlplus-21.5.0.0.0-1.el8.x86_64.rpm
$ wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-devel-21.5.0.0.0-1.el8.x86_64.rpm
$ wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-jdbc-21.5.0.0.0-1.el8.x86_64.rpm

Sau đó, cài đặt bằng lệnh sau.

$ cd /usr/local/src
$ dnf localinstall oracle* --nogpgcheck

Với el7 / CentOS 7

Bạn cũng cần tải các gói cần thiết trước.

$ cd /usr/local/src
$ wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-basic-21.5.0.0.0-1.x86_64.rpm
$ wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-sqlplus-21.5.0.0.0-1.x86_64.rpm
$ wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-devel-21.5.0.0.0-1.x86_64.rpm
$ wget https://download.oracle.com/otn_software/linux/instantclient/215000/oracle-instantclient-jdbc-21.5.0.0.0-1.x86_64.rpm

Rồi cài đặt bằng lệnh sau.

$ cd /usr/local/src
$ yum localinstall oracle* --nogpgcheck

Cài đặt OCI8 qua lệnh PECL

Sau khi cài đặt Oracle InstantClient, bạn cần cài đặt phần mở rộng OCI8 để kết nối đến cơ sở dữ liệu Oracle từ PHP. Việc cài đặt phiên bản nào của OCI8 sẽ phụ thuộc vào phiên bản PHP bạn đang sử dụng.

Bạn có hai cách để cài là dùng lệnh PECL hoặc tải package về và tự build bằng phpize và make.

Trước hết, hãy tìm hiểu cách thứ nhất. Bạn gõ như sau.

$ pecl install oci8

Nếu dùng PHP 7.x, thay vì oci8, bạn dùng oci8-2.2.0. Tức là câu lệnh bên trên sẽ trở thành như sau.

$ pecl install oci8-2.2.0

Có một lưu ý, trong trường hợp bạn dùng tường lửa, bạn cần thiết lập proxy PEAR trước khi chạy lệnh PECL trên.

$ pear config-set http_proxy http://my-proxy.example.com:80/

Xem ngay tin tuyển dụng PHP lương cao trên TopDev

Cài đặt OCI8 dùng phpize và make

Đầu tiên, chuyển đến /usr/local/src.

$ cd /usr/local/src

Tải bản OCI8 tương ứng với phiên bản PHP

PHP 7.x

$ wget https://pecl.php.net/get/oci8-2.2.0.tgz

PHP 8.0

$ wget https://pecl.php.net/get/oci8-3.0.1.tgz

PHP 8.1

$ wget https://pecl.php.net/get/oci8-3.2.1.tgz

Giải nén file vừa tải bằng tar, rồi chuyển đến thư mục vừa được giải nén. Chẳng hạn, với trường hợp PHP 7.x.

$ tar -zxvf oci8-2.2.0.tgz
$ cd oci8-2.2.0

Build

Dùng phpize và make để build. Bạn có thể cần cài đặt hai phần mềm này qua yum (hoặc có thể là hậu duệ của nó — dnf nếu bạn dùng CentOS 8). Nếu bạn chưa biết thì yum (hay dnf) là trình quản lý gói, một “App Store” trên CentOS. Nó giúp bạn cài đặt các phần mềm cần thiết.

Chạy phpize và configure.

$ phpize
$ ./configure

Trong trường hợp bạn dùng php selector hay php-fpm, bạn cần cung cấp một đường dẫn cụ thể.

Với php selector.

$ /opt/alt/php74/usr/bin/phpize
$ ./configure --with-php-config=/opt/alt/php74/usr/bin/php-conf

Với php-fpm.

$ /opt/alt/php-fpm74/usr/bin/phpize
$ ./configure --with-php-config=/opt/alt/php-fpm74/usr/bin/php-config

Ví dụ bên trên dành cho PHP 7.4. PHP 8.0 và PHP 8.1 cũng tương tự.

Sau khi chạy phpize và configure, bạn cần chạy make.

$ make && make install

Config php/php-fpm

Sau khi cài OCI8 xong, bạn phải chỉnh sửa php.ini để có sử dụng. Thường đường dẫn sẽ là /usr/local/php/php.ini. Bạn thêm dòng sau.

extension=oci8.so

Với php-fpm, phải chỉnh sửa /etc/php-fpm.d/www.conf thêm dòng sau.

env[LD_LIBRARY_PATH] = /usr/lib/oracle/21/client64/lib:$LD_LIBRARY_PATH

Tiếp theo, hãy khởi động lại php/php-fpm. Bây giờ, bạn có thể sử dụng OCI8 để kết nối tới cơ sở dữ liệu Oracle được rồi. Nếu kiểm tra phpinfo sẽ thấy OCI8 đã enable.

Bài viết gốc được đăng tải tại kinhnghiemlaptrinh.com

Xem thêm:

Đừng bỏ lỡ việc làm IT lương cao, đãi ngộ hấp dẫn trên TopDev