Tôi hiện đang làm việc trên một dự án PHP yêu cầu kết nối với Oracle DB hiện có. Chúng tôi sử dụng Yii 2. 0 làm khung PHP của chúng tôi và Ubuntu 14. 10 là môi trường phát triển
Sau khi tìm kiếm, tôi phát hiện ra rằng Yii 2. 0 chỉ hỗ trợ Oracle DB thông qua PDO [thông qua tiện ích mở rộng PDO_OCI] khá cũ và yêu cầu một số thủ thuật để cài đặt. Hỗ trợ chính thức cho Oracle OCI8 hiện chưa khả dụng trong lõi Yii, vì vậy chúng tôi vẫn sử dụng PDO_OCI vẫn là THỬ NGHIỆM
Các tiện ích mở rộng PDO, PDO_OCI từ
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
5 đã lỗi thời vì phiên bản PHP mới nhất đã tích hợp sẵn chúng trong lõi của nó. Sau khi thử một số cách tiếp cận, chúng tôi đã kết thúc với việc Biên dịch các tiện ích mở rộng này từ nguồn PHP theo các bước và thủ thuật được mô tả trong bài đăng này. Tôi cũng bao gồm các bước để cài đặt tiện ích mở rộng Oracle OCI8 được duy trì tốt hơn trong bài đăng này cho những ai muốn sử dụng nó mà không cần sự trợ giúp của Yii DB ConnectionCài đặt Oracle Instant ClientTải xuống các gói Oracle Instant ClientTrước tiên, hãy chọn ứng dụng khách phù hợp cho hệ điều hành của bạn tại đây, Instant Client cho Linux x86–64 trong trường hợp của tôi là Ubuntu 14 64 bit. 10
Sau đó, Chấp nhận Thỏa thuận Cấp phép và tải xuống các gói vòng/phút
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
6 & sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
7 cho phiên bản Oracle của bạn. Phiên bản Oracle DB của chúng tôi là 11g r2, vì vậy tôi cần tải xuống- Oracle-instantclient11. 2-cơ bản-11. 2. 0. 1. 0–1. x86_64. vòng/phút
- Oracle-instantclient11. 2-de-11. 2. 0. 1. 0–1. x86_64. vòng/phút
Chuyển đổi gói phần mềm
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
8 sang Debian [sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
9] bằng cách sử dụng export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
0sudo apt-get instal alien
sudo alien -d oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm
sudo alien -d oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.rpm
Điều này sẽ xuất ra
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
1 & export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
2 có thể được cài đặt thông qua lệnh export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
3 của Ubuntusudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
Sau khi cài đặt thành công, thư viện máy khách sẽ được cài đặt trong
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
4 và các tệp tiêu đề của nhà phát triển sẽ nằm trong export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
5Xuất biến môi trường export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
6Chúng tôi cần các biến môi trường này để biên dịch các tiện ích mở rộng PDO_OCI & OCI8
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
Tải xuống, biên dịch và cài đặt các tiện ích mở rộng PHP export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
7 và export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
8 Tải xuống mã nguồn PHPGiả sử rằng bạn đã cài đặt PHP trên hệ thống của mình, bạn chỉ cần biên dịch và cài đặt riêng các tiện ích mở rộng
Lúc đầu, hãy kiểm tra phiên bản PHP hiện tại của bạn bằng lệnh
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
9 và tải xuống kho lưu trữ nguồn PHP tương ứng từ http. //php. mạng/tải xuống. php. Trong trường hợp của tôi, tôi đã tải xuống sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
80 từ http. //php. mạng/nhận/php-5. 5. 9. hắc ín. bz2/from/a/mirror và giải nén nó bằng lệnhsudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
8Sau đó chuẩn bị tiện ích mở rộng
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
81 để biên dịch bằng cách sử dụngsudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
1Điều này sẽ chuẩn bị kịch bản
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
82 cho bạnGhi chú. Bạn cần gói
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
83 để sử dụng lệnh
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.debsudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
84. Nếu bạn không có nó trên hệ thống của mình, chỉ cần cài đặt trước
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.debsudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
85
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
Tiếp theo, tiếp tục với
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
82 để tạo sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
87sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
8Bạn có thể gặp lỗi hét lên rằng
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
88. Điều này là do tập lệnh sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
82 cố gắng tìm các tệp bao gồm php trong sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
10 đã được thay đổi thành sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
11 cho các phiên bản PHP mới nhất. Mẹo nhanh ở đây là tạo một liên kết mềm cho đường dẫn kế thừasudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
3và chạy lại tập lệnh
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
12. Nó sẽ thành công ngay bây giờ. Tiến hành biên dịchsudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
5Nó có thể hét lên một lỗi khác tương tự như
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
13. Để bỏ qua điều này, chúng ta cần một thủ thuật khác ở đây- Chỉnh sửa tệp
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
87
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
8- Tìm dòng bắt đầu bằng
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
15 và thêm đường dẫn đến các tệp tiêu đề Oracle Instant Client đã cài đặt [
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.debexport ORACLE_HOME=/usr/lib/oracle/11.2/client64
5] vào đó, nếu dòng này KHÔNG tồn tại, chỉ cần thêm nó vào gần đầu tệp. Kết quả cuối cùng phải là
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
sudo ldconfig
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
1Sau đó chạy lại
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
17, quá trình biên dịch sẽ hoàn tất ngay bây giờCuối cùng, cài đặt tiện ích mở rộng đã biên dịch vào hệ thống
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
0Thao tác này sẽ sao chép tệp
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
18 sang sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
19Bật tiện ích mở rộng mớiCài đặt OCI8 và các tiện ích mở rộng khác có thể được thực hiện dễ dàng theo các bước tương tự, với các thủ thuật được đề cập ở trên
Bước cuối cùng là bật các tiện ích mở rộng cần thiết và khởi động lại máy chủ web [giả sử bạn đang sử dụng Apache 2 tại đây]
Đầu tiên, tạo
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
80 trong sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
81sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
1với nội dung sau
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
2Sau đó, kích hoạt nó và khởi động lại Apache
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
3Điều này sẽ tự động tạo một liên kết mềm tới tệp
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
80 vừa tạo cho bạn trong sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
83 tương tự như sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
84, trong đó tiền tố 20 là mức ưu tiên mặc định của tiện ích mở rộngĐể đảm bảo rằng mọi thứ hoạt động như mong đợi, bạn có thể tạo và tệp
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
85 với nội dung sau trong thư mục gốc web của mìnhsudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
4Và mở nó trong trình duyệt [http. // localhost/thông tin. php chẳng hạn], bạn sẽ thấy thông tin về tiện ích mở rộng
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb
sudo dpkg -i oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.deb
81 được cài đặt như sau