PHP dường như xác nhận rằng tiện ích mở rộng đang chạy đúng vì đoạn mã sau xác nhận nó đã được tải
echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
Ngoài ra, phpinfo[]
cho thấy tiện ích mở rộng mongodb đã được tải
CẬP NHẬT. vấn đề của tôi vẫn chưa được giải quyết
phpinfo[]
cho thấy rõ ràng rằng trình điều khiển đã được tải
Nhưng tôi vẫn nhận được cùng một lỗi nghiêm trọng
- stackoverflow. comghi bàn. 91
câu trả lời được chấp nhận
TL; DR
Lớp
echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
0 là một phần của mongo gói PECL kế thừa nhưng không còn là gói mongodb cập nhậtVà vì bạn đã cài đặt tiện ích mở rộng
echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
1 chứ không phải tiện ích mở rộng echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
0, đây là lý do tại sao bạn gặp lỗiFatal error: Class 'MongoClient' not found
Trên MongoDB PHP driver github repo, ghi chú phát hành về phiên bản 1. 0. 0, đang đề xuất các nhà phát triển sử dụng
echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
1 thay vì echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
0Các thay đổi từ tiện ích mở rộng mongo kế thừa của chúng tôi
Đáng kể nhất, các lớp MongoClient, MongoDB và MongoCollection của trình điều khiển kế thừa đã bị lỗi thời bởi lớp MongoDB\Driver\Manager, đây là cổng mới để kết nối và thực hiện các truy vấn, lệnh và thao tác ghi
Nguồn. https. //github. com/mongodb/mongo-php-driver/releases/tag/1. 0. 0
Vì vậy, đây là tài liệu về lớp thay thế và đoạn mã sẽ thay thế tài liệu của bạn
$m = new MongoDB\Driver\Manager["mongodb://localhost:27017"];
Vì tài liệu đang nhắc nó, nên lớp này không được dùng nữa
Cảnh báo Tiện ích mở rộng xác định lớp này không được dùng nữa. Thay vào đó, nên sử dụng tiện ích mở rộng MongoDB. Các lựa chọn thay thế cho lớp này bao gồm
Nguồn. http. //php. mạng/MongoClient
Từ những gì tôi đọc trên lịch sử phát hành kho lưu trữ github của họ, lớp bạn đang cố sử dụng đã lỗi thời kể từ phiên bản
echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
3, vì vậy, trên phiên bản echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
4 của bạn, lớp này thậm chí không còn là một phần của echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
5 nữaĐiều đó được xác nhận bởi vấn đề này trên github của họ
derickr đã nhận xét vào ngày 16 tháng 4
MongoClient là một lớp từ trình điều khiển kế thừa cũ và không được cho là có sẵn trong lớp này. Trình điều khiển mới có \MongoDB\Driver\Manager và thư viện đi kèm có \MongoDB\Client
Bạn cần cài đặt tiện ích mở rộng kế thừa cũ [pecl install mongo] và sử dụng PHP 5. x hoặc cập nhật mã của bạn để sử dụng các lớp trình điều khiển mới này vì trình điều khiển cũ không khả dụng cho PHP 7. Có hướng dẫn nâng cấp tại http. //mongodb. github. io/mongo-php-library/upgrade-guide/
Nguồn.
Một cách khác, như được đề xuất bởi thành viên MongoDB được trích dẫn ở trên là sử dụng phần mở rộng pecl này. https. //pecl. php. net/gói/mongo thay vì https. //pecl. php. net/package/mongodb nhưng cũng xin lưu ý cảnh báo nêu rõ
Gói này đã được thay thế, nhưng vẫn được duy trì để sửa lỗi và bảo mật
ghi bàn. 0
MongoDB[mongo-php-library] và MongoClient[ext-mongo] là các phần mở rộng khác nhau. Tiện ích mở rộng MongoClient không được dùng nữa. Nếu bạn muốn sử dụng các lớp liên quan đến MongoClient[ext-mongo], hãy sử dụng một trình bao bọc như thế này;
Vậy là mình đã cài xong php_mongodb. dll từ php_mongodb-1. 2. 5-5. 6-ts-vc11-x64. nén vào "C. \wamp64\bin\php\php5. 6. 25\ext\". Tôi đã thêm tiện ích mở rộng. dll trong php. ban đầu
Khi tôi chạy php. exe, không có gì sai, bất kỳ cảnh báo nào. Nhưng Mongodb không xuất hiện trong danh sách các phần mở rộng php [phpinfo[]]
Ngoài ra, chỉ mục của tôi. php trả về "Lỗi nghiêm trọng. Lớp 'Mongo' không tìm thấy trong C. \wamp64\www\scripts\index. php trên dòng 47". Dòng 47.
echo extension_loaded["mongodb"] ? "loaded\n" : "not loaded\n";
3- Phiên bản Apache. 2. 4. 23
- Phiên bản PHP. 5. 6. 25
- hệ điều hành. cửa sổ 10
- ẩm ướt. Phiên bản 3. 0. 6 - 64bit
Tôi đã thử php_mongodb rồi. dll hoặc php_mongo. dll, các phiên bản khác nhau. Nhưng bây giờ, tôi có bất kỳ ý tưởng
Nếu ai đó có giải pháp để đề xuất, anh ấy sẽ được chào đón. Cảm ơn bạn trước
- stackoverflow. comghi bàn. 0
câu trả lời được chấp nhận
Cuối cùng, tôi tìm thấy một giải pháp. dll bên phải
Thực ra mình phải dùng MongoDB PHP Driver trên Windows. Sau đó thêm extension=php_mongodb. dll vào php. ban đầu. Và tải xuống tệp tương ứng từ mongodb 1. 2. 5, trong trường hợp này là 5. 6 Chủ Đề An Toàn [TS] x64