programing

MongoDB: 치명적 오류: 'MongoClient' 클래스를 찾을 수 없습니다.

oldcodes 2023. 7. 3. 23:10
반응형

MongoDB: 치명적 오류: 'MongoClient' 클래스를 찾을 수 없습니다.

다음 PHP 코드를 실행할 때:

$m = new MongoClient("mongodb://localhost:27017");

다음 오류가 발생합니다.

치명적 오류: 클래스 'MongoClient'를 찾을 수 없습니다(...)

MongoDB 확장이 제대로 설치된 것 같습니다(복사했습니다).php_mongodb.dllext 폴더 및 업데이트됨php.ini).

PHP는 다음 코드가 로드되었음을 확인하므로 확장이 제대로 실행되고 있는지 확인하는 것 같습니다.

echo extension_loaded("mongodb") ? "loaded\n" : "not loaded\n";

또한.phpinfo()mongodb 확장이 로드되었음을 나타냅니다.


업데이트: 제 문제는 아직 해결되지 않았습니다.

phpinfo()드라이버가 로드되었음을 명확하게 나타냅니다.

enter image description here

하지만 저는 여전히 같은 치명적인 오류를 받고 있습니다.

TL;DR

학급.MongoClient레거시 PECL 패키지 mongo의 일부이지만 더 이상 최신 mongodb 패키지의 일부가 아닙니다.

그리고 당신이 가지고 있기 때문에.mongodb설치된 확장이며, 설치되지 않음mongo첫째, 이것이 당신이 오류를 얻는 이유입니다.

Fatal error: Class 'MongoClient' not found

MongoDB PHP 드라이버 githubrepo에서 버전 1.0.0에 대한 릴리스 노트는 개발자들에게 사용할 것을 제안하고 있습니다.MongoDB\Driver\Manager대신에MongoClient

레거시 mongo 확장의 변경 사항

가장 중요한 것은 레거시 드라이버의 MongoClient, MongoDB 및 MongoCollection 클래스가 쿼리, 명령 및 쓰기 작업을 연결하고 실행하기 위한 새로운 게이트웨이인 MongoDB\Driver\Manager 클래스에 의해 폐지되었다는 것입니다.

출처:: https://github.com/mongodb/mongo-php-driver/releases/tag/1.0.0

다음은 교체 클래스 문서와 사용자의 코드를 교체해야 하는 코드 조각입니다.

$m = new MongoDB\Driver\Manager("mongodb://localhost:27017");

문서에 요청이 표시되므로 클래스는 더 이상 사용되지 않습니다.

경고 이 클래스를 정의하는 이 확장은 더 이상 사용되지 않습니다.대신 MongoDB 확장을 사용해야 합니다.이 클래스의 대안은 다음과 같습니다.

출처: http://php.net/MongoClient


가 그들의 github 저장소 릴리스 기록에서 읽은 바에 따르면, 당신이 사용하려는 클래스는 버전 이후로 더 이상 사용되지 않았습니다.mongodb 1.0.0그래서, 버전에서.1.6.0당신은, 이 수업은 심지어 학교의 일부도 아닙니다.dll더이상.

그것은 그들의 깃허브에서 이 문제에 의해 확인됩니다.

데릭은 4월 16일에 논평했습니다.

MongoClient는 이전 레거시 드라이버의 클래스이므로 이 드라이버에서는 사용할 수 없습니다.새 드라이버에는 \MongoDB\Driver\Manager가 있고 함께 제공되는 라이브러리에는 \MongoDB\Client가 있습니다.

이전의 기존 확장자(pecl install mongo)를 설치하고 PHP 5.x를 사용하거나 PHP 7에서 이전 드라이버를 사용할 수 없기 때문에 이 새 드라이버 클래스를 사용하려면 코드를 업데이트해야 합니다.http://mongodb.github.io/mongo-php-library/upgrade-guide/ 에 업그레이드 가이드가 있습니다.

출처: https://github.com/mongodb/mongo-php-driver/issues/300#issuecomment-210820288


위에서 인용한 MongoDB 구성원이 제안한 또 다른 방법은 https://pecl.php.net/package/mongodb 대신 https://pecl.php.net/package/mongo 이라는 pecl 확장자를 사용하는 것입니다. 그러나 다음과 같은 경고도 확인하시기 바랍니다.

이 패키지는 대체되었지만 버그 및 보안 수정을 위해 계속 유지 관리됩니다.

MongoDB(mongo-php-library)와 MongoClient(ext-mongo)는 서로 다른 확장입니다.MongoClient 확장이 더 이상 사용되지 않습니다.MongoClient(ext-mongo) 관련 클래스를 사용하려면 다음과 같은 래퍼를 사용합니다;

https://github.com/mitsh/mongo-php-adapter

mongo-php-library 위에 ext-mongo 인터페이스를 제공하는 어댑터

프로젝트에서 아무것도 변경할 필요가 없습니다.설치하고 작곡가와 함께 포함하기만 하면 됩니다.

언급URL : https://stackoverflow.com/questions/37261957/mongodb-fatal-error-class-mongoclient-not-found

반응형