Docker-php-ext-cài đặt oci8
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 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 6 & sudo dpkg -i oracle-instantclient11.2-basic-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
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 8 sang Debian (sudo dpkg -i oracle-instantclient11.2-basic-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 0sudo apt-get instal alien Điều này sẽ xuất ra export ORACLE_HOME=/usr/lib/oracle/11.2/client64 1 & export ORACLE_HOME=/usr/lib/oracle/11.2/client64 2 có thể được cài đặt thông qua lệnh export ORACLE_HOME=/usr/lib/oracle/11.2/client64 3 của Ubuntusudo dpkg -i oracle-instantclient11.2-basic-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 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 5Xuất biến môi trường export ORACLE_HOME=/usr/lib/oracle/11.2/client64 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 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 7 và export ORACLE_HOME=/usr/lib/oracle/11.2/client64 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 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 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 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 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 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 82 cho bạn
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 82 để tạo sudo dpkg -i oracle-instantclient11.2-basic-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 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 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 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 10 đã được thay đổi thành sudo dpkg -i oracle-instantclient11.2-basic-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 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 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 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 13. Để bỏ qua điều này, chúng ta cần một thủ thuật khác ở đây
sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb 8
sudo dpkg -i oracle-instantclient11.2-basic-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 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 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 18 sang sudo dpkg -i oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.deb 19Bật tiện ích mở rộng mới 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 80 trong sudo dpkg -i oracle-instantclient11.2-basic-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 1với nội dung sau sudo dpkg -i oracle-instantclient11.2-basic-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 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 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 83 tương tự như sudo dpkg -i oracle-instantclient11.2-basic-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 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 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 81 được cài đặt như sau
Tôi có thể chạy PHP trong Docker không?Bạn có thể sử dụng docker run để tạo vùng chứa và thực thi PHP . Bạn chỉ cần thêm một số khối lượng vào thùng chứa. Các tập này phải bao gồm các đường dẫn đến mã của bạn.
Làm cách nào để cài đặt OCI8 trên Linux?Cách cài đặt Oracle Client Instant (OCI8) trên Linux . Tải xuống Oracle Instant Client và SDK mới nhất. . Giải nén các tập tin. . Thêm vào thư mục cấu hình của ldconfig. . Cài đặt gói. . Cài đặt tiện ích mở rộng OCI8 qua PECL. . Tải phần mở rộng từ php. ban đầu. . Khởi động lại và kiểm tra |