Lỗi của bạn cho thấy kiểu không khớp được tạo sẵn.
Giải quyết bằng cách làm theo các bước sau:
Đảm bảo bạn tải xuống và cài đặt oracle Instantclient tại: http://www.oracle.com/technetwork/topics/winsoft -085727.html , nhưng lưu ý:
- Ghi lại Oracle của bạn phiên bản cơ sở dữ liệu; sử dụng Phiên bản 12.1.x cho cơ sở dữ liệu Oracle 12c và Phiên bản 11.1.x trong 11g phát hành.
- Trong cả hai trường hợp, hãy đảm bảo bạn tải xuống Basic Lite phiên bản của Oracle Instantclient.
Sau đó, hãy thêm vị trí của Oracle ngay lập tức vào Đường dẫn biến hệ thống của bạn trong Biến môi trường của bạn. Đảm bảo như nhau rằng bạn có cả PHP của xampp và ext của nó có sẵn và đặt ở đó (nếu không, hãy thêm chúng).
Sau đó, tiến hành thêm một biến Hệ thống mới với TNS_ADMIN dưới dạng tên biến và vị trí tới Oracle Instantclient dưới dạng giá trị biến .
Ngoài ra, hãy xác định biến Người dùng của bạn PATH có cùng vị trí đối với Oracle Instantclient dưới dạng giá trị .
Sau giai đoạn này, hãy khởi động lại máy tính của bạn để phổ biến đầy đủ các biến môi trường mới được xác định.
Sau khi bật, bạn có thể mở Windows Command Prompt của mình và chạy where oci * để đảm bảo rằng bạn đã xác định rõ các biến môi trường của mình; phản hồi sẽ giống như sau:
C:\Users\flex>where oci*
C:\oraclexe\app\oracle\product\11.2.0\server\bin\oci.dll
C:\oraclexe\app\oracle\product\11.2.0\server\bin\ocijdbc11.dll
C:\oraclexe\app\oracle\product\11.2.0\server\bin\ocijdbc11.sym
C:\oraclexe\app\oracle\product\11.2.0\server\bin\ociw32.dll
C:\instantclient_11_2\oci.dll
C:\instantclient_11_2\oci.sym
C:\instantclient_11_2\ocijdbc11.dll
C:\instantclient_11_2\ocijdbc11.sym
C:\instantclient_11_2\ociw32.dll
C:\instantclient_11_2\ociw32.sym
Nếu không, chắc hẳn bạn đã bỏ lỡ điều gì đó và cần phải xem lại quy trình, đảm bảo hoàn thành nó một cách hiệu quả.
Bây giờ, bạn có thể tiếp tục với tệp php.ini của mình (các biến môi trường được cung cấp được xác định rõ ràng) và bật oci của bạn các phần mở rộng (php_oci8.dll và php_oci8_11g.dll) bằng cách bỏ ghi chú chúng; bạn có thể đạt được điều đó bằng cách loại bỏ cột bán phần (; ) trước các phần mở rộng đã nói.
Hãy nhớ lưu tệp php.ini của bạn, sau đó, khởi động lại hoặc khởi động apache của bạn nếu nó chưa chạy.
Để kiểm tra cấu hình PHP oci8 của bạn đã được bật chưa, bạn có thể quay lại Dấu nhắc lệnh Windows và chạy: php --ri oci8 ; câu trả lời phải tương tự như câu trả lời bên dưới:
C:\Users\flex>php --ri oci8
OCI8 Support => enabled
OCI8 DTrace Support => disabled
OCI8 Version => 2.1.1
Revision => $Id: 86f22a208f89dcd5b305e82929a7429683968b11 $
Oracle Run-time Client Library Version => 11.2.0.4.0
Oracle Compile-time Instant Client Version => 10.2
Directive => Local Value => Master Value
oci8.max_persistent => -1 => -1
oci8.persistent_timeout => -1 => -1
oci8.ping_interval => 60 => 60
oci8.privileged_connect => Off => Off
oci8.statement_cache_size => 20 => 20
oci8.default_prefetch => 100 => 100
oci8.old_oci_close_semantics => Off => Off
oci8.events => Off => Off
Statistics =>
Active Persistent Connections => 0
Active Connections => 0
Ngoài ra, bạn có thể tạo một tệp PHP với <?php phpinfo(); ?>
dưới dạng nội dung, sau đó mở nó trong trình duyệt của bạn và tìm kiếm các lần xuất hiện oci8; nó cũng sẽ hiển thị ở đó.