Phương pháp được đề xuất để kết nối các ứng dụng PHP với Cơ sở dữ liệu Oracle là sử dụng Zend Sever. Máy chủ Zend là một máy chủ ứng dụng web sẵn sàng cho doanh nghiệp được hỗ trợ bởi Oracle để chạy và quản lý các ứng dụng PHP trên cả nền tảng Linux và Windows. Tuy nhiên, nếu bạn không muốn sử dụng Zend Server, bài viết này chỉ cho bạn cách cài đặt và định cấu hình thủ công tiện ích mở rộng PHP OCI8 và Thư viện ứng dụng khách tức thời của Oracle để kết nối các ứng dụng PHP với Oracle
Cài đặt ứng dụng khách tức thì trên Linux
Tải xuống tệp zip ứng dụng khách tức thời hoặc RPM từ trang Ứng dụng khách tức thì OTN. Tất cả các cài đặt yêu cầu RPM ánh sáng cơ bản hoặc cơ bản
Cài đặt ứng dụng khách tức thì với RPM
- Cài đặt RPM với tư cách là người dùng root, sử dụng yum.
# yum install oracle-instantclient12.2-basic-12.2.0.1.0-1.i386.rpm
- Thêm thư mục cho Instant Client vào biến môi trường LD_LIBRARY_PATH chẳng hạn.
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client/lib:$LD_LIBRARY_PATH
- Thêm thư mục bin của Instant Client vào biến môi trường PATH chẳng hạn.
# export PATH=/usr/lib/oracle/12.2/client/bin:$PATH
Cài đặt ứng dụng khách tức thì với ZIP
- Tải xuống gói Basic hoặc Basic Light ZIP
- Giải nén các gói vào một thư mục duy nhất, chẳng hạn như
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client/lib:$LD_LIBRARY_PATH
5# cd /opt/oracle # unzip instantclient-basic-linux-12.2.0.1.0.zip
- Tạo các liên kết
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client/lib:$LD_LIBRARY_PATH
6 và# export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client/lib:$LD_LIBRARY_PATH
7 thích hợp cho phiên bản Instant Client. Ví dụ_______7_______ - Cài đặt gói
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client/lib:$LD_LIBRARY_PATH
8 [còn được gọi là libaio1 trong một số bản phát hành], chẳng hạn như trên Oracle Linux, hãy chạy gói này với tư cách người dùng root.# yum install libaio
- Ví dụ, đặt biến môi trường LD_LIBRARY_PATH vào thư mục mà bạn đã giải nén ứng dụng tức thời.
# export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH
- Thêm thư mục bin của Instant Client vào biến môi trường PATH chẳng hạn.
# export PATH=/opt/oracle/instantclient_12_2:$PATH
Cài đặt PHP OCI8
Bạn có thể tải xuống và cài đặt phiên bản OCI8 mới nhất với PECL
Để cài đặt cho PHP 7
# pecl install oci8
Để cài đặt cho PHP 5. 2 - PHP5. 6
# pecl install oci8-2.0.12
PECL là kho lưu trữ các phần mở rộng PHP được viết bằng C và nó đi kèm với PEAR [Kho lưu trữ ứng dụng và tiện ích mở rộng PHP]. Làm theo các bước bên dưới để cài đặt PECL nếu bạn chưa có
Trên Linux và UNIX
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client/lib:$LD_LIBRARY_PATH0
Trên Windows, bạn có thể sao chép tập lệnh tại vị trí này http. //quả lê. php. net/go-lê. phar sang tệp cục bộ có tên go-pear. phar và chạy
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client/lib:$LD_LIBRARY_PATH1
Bật OCI8
Sau khi cài đặt tiện ích mở rộng chia sẻ OCI8 oci8. vì vậy thư viện sẽ có sẵn trong thư mục tiện ích mở rộng. Để bật tiện ích mở rộng này, hãy chỉnh sửa php. ini và thêm dòng sau
# export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client/lib:$LD_LIBRARY_PATH2
Trên windows, file DLL mở rộng sẽ có sẵn trong thư mục tiện ích mở rộng. Bạn cần bỏ ghi chú dòng dưới đây trong php. tập tin ini
$c1 = oci_connect["hr", "welcome", 'localhost/XE'];
$c2 = oci_connect["hr", "welcome", 'localhost/XE'];
// Both $c1 and $c2 show the same PHP resource id meaning they use the
// same underlying database connection
echo "c1 is $c1
\n";
echo "c2 is $c2
\n";
function create_table[$conn]
{
$stmt = oci_parse[$conn, "create table hallo [test varchar2[64]]"];
oci_execute[$stmt];
echo "Created table
\n";
}
function drop_table[$conn]
{
$stmt = oci_parse[$conn, "drop table hallo"];
oci_execute[$stmt];
echo "Dropped table
\n";
}
function insert_data[$connname, $conn]
{
$stmt = oci_parse[$conn, "insert into hallo
values[to_char[sysdate,'DD-MON-YY HH24:MI:SS']]"];
oci_execute[$stmt, OCI_DEFAULT];
echo "$connname inserted row without committing
\n";
}
function rollback[$connname, $conn]
{
oci_rollback[$conn];
echo "$connname rollback
\n";
}
function select_data[$connname, $conn]
{
$stmt = oci_parse[$conn, "select * from hallo"];
oci_execute[$stmt, OCI_DEFAULT];
echo "$connname ----selecting
\n";
while [oci_fetch[$stmt]] {
echo " " . oci_result[$stmt, "TEST"] . "
\n";
}
echo "$connname ----done
\n";
}
create_table[$c1];
insert_data['c1', $c1]; // Insert a row using c1
sleep[2]; // sleep to show a different timestamp for the 2nd row
insert_data['c2', $c2]; // Insert a row using c2
select_data['c1', $c1]; // Results of both inserts are returned
select_data['c2', $c2]; // Results of both inserts are returned
// Both $c1 and $c2 show the same PHP resource id meaning they use the
0
// same underlying database connection
echo "c1 is $c1
\n";
echo "c2 is $c2
\n";
// Both $c1 and $c2 show the same PHP resource id meaning they use the
1
// same underlying database connection
echo "c1 is $c1
\n";
echo "c2 is $c2
\n";
// Both $c1 and $c2 show the same PHP resource id meaning they use the
2
// same underlying database connection
echo "c1 is $c1
\n";
echo "c2 is $c2
\n";
// Both $c1 and $c2 show the same PHP resource id meaning they use the
3
// same underlying database connection
echo "c1 is $c1
\n";
echo "c2 is $c2
\n";
// Both $c1 and $c2 show the same PHP resource id meaning they use the
4
// same underlying database connection
echo "c1 is $c1
\n";
echo "c2 is $c2
\n";
// Both $c1 and $c2 show the same PHP resource id meaning they use the
5
// same underlying database connection
echo "c1 is $c1
\n";
echo "c2 is $c2
\n";