2016-01-05 24 views
5

Đây là một tình huống kỳ lạ mà tôi đã tìm thấy. Tôi đã sử dụng PHP và MongoDB cùng nhau trên một dự án và cập nhật phần mềm liên quan. Sau khi nâng cấp, tôi đã đảm bảo cập nhật các tập tin conf mới và tất cả là tốt --- trừ khi tôi cố gắng sử dụng lớp MongoClient, tôi nhận được lỗi nghiêm trọng sau đây:Sau khi nâng cấp PHP lên phiên bản 7, tại sao tôi không thể sử dụng trình điều khiển mongodb?

Fatal error: Uncaught Error: Class 'MongoClient' not found in /srv/http/test.php

Vì vậy, bản năng đầu tiên của tôi là để kiểm tra số /etc/php/php.ini của tôi để đảm bảo rằng mongodb.so được bao gồm chính xác. Tôi tìm thấy nó sau khi extension dòng khác:

extension=mcrypt.so 
extension=zip.so 
extension=mongodb.so ; <--- here it is 

Cùng với đó kiểm tra, tôi tải lên một phpinfo() kịch bản nhanh chóng để kiểm tra mà tôi đã sử dụng php.ini tập tin đúng, và khẳng định rằng tôi. Và không chỉ vậy, trình điều khiển mongodb cũng xuất hiện được tải một cách chính xác!

Loaded Configuration File  /etc/php/php.ini 
. . . 
mongodb support    enabled 
mongodb      version  1.1.1 
mongodb      stability stable 
libmongoc      version  1.3.1-dev 
libbson      version  1.3.0 

Vì vậy, tôi đã khởi động lại httpd và thử lại. Không có súc sắc, vẫn không thể tìm thấy lớp học MongoClient. Vì vậy, tôi đã cố gắng cài đặt nó từ pecl thay vì trình quản lý gói của phân phối của tôi và tình hình cũng giống như mô tả ở trên.


Vì vậy, đây là tóm tắt nhanh chóng của tình hình:

  • Linux kernel 4.3.3
  • PHP Version 7.0.1
  • phiên bản php-MongoDB 1.1.1
  • Dường như được định cấu hình đúng và mongodb được bật và hiển thị trong phpinfo().
  • Đã cố gắng cài đặt trình điều khiển mongodb qua pecl và trình quản lý gói của nhà phân phối của tôi.

thông tin khác có thể hữu ích:

  • MongoDB Version 3.2.0
  • mongod đang chạy
  • Cũng cố gắng khởi động lại, không có sự thay đổi.

Trả lời

5

Tôi đã tìm được câu trả lời.

Lớp học đã được thay đổi. Số điện thoại này không còn là \MongoClient và bây giờ là \MongoDB\Driver\Manager

Tất cả những gì tôi cần là một trình tái cấu trúc. Trình điều khiển mới được thiết kế để trở thành trình điều khiển cấp thấp hơn cho các chức năng cấp cao được lấp đầy với các thư viện không gian người dùng, vì vậy bất kỳ ai nâng cấp lên php7, hãy đảm bảo bạn kiểm tra xem bạn có thoải mái với trình điều khiển mới hay không. thư viện tồn tại khi bạn làm điều đó. Hy vọng câu hỏi/câu trả lời này sẽ giúp người khác trong tương lai.

commenter ianaz dưới đây đã đăng tải này thư viện userspace tốt cho MongoDB: http://mongodb.github.io/mongo-php-library/

+1

là họ nghiêm trọng ?! ở đây một thư viện không gian người dùng: http://mongodb.github.io/mongo-php-library/. Cảm ơn :) – ianaz

+0

@ianaz cuộc gọi tốt, tôi nên thêm điều đó vào câu trả lời. – dotVezz

Các vấn đề liên quan