Фатальная ошибка — класс ‘Mongo’ не найден

#php #mongodb #doctrine-orm #zend-framework2 #odm

#php #apache #mongodb #установка #wamp

Вопрос:

Я пытаюсь выполнить это:

 <?php

// connect
$m = new Mongo();

?>
 

Но я получаю следующую ошибку:

Фатальная ошибка: класс ‘Mongo’ не найден в C:wampwww …..


Информация:

  • PHP: 5.38
  • MongoDB: mongodb-win32-i386-2.0.2
  • Драйвер MongoDB PHP: mongo-1.1.4-php5.3vc6ts
  • WampServer: 2.2
  • ОС: Windows 7 Enterprise SP1

Я выполнил установку MongoDB нормально (вкл. добавив DLL в ext amp; php.ini), я начал mongod.exe и ВАМПИР бежит.

Что это означает, отсутствует / неверно?


Редактировать:

Я запустил его на другом компьютере с Windows 7 (Windows 7 Profressional). Это вызвало у меня любопытство. Итак, теперь мой компьютер с Windows 7 Enterprise SP1 имеет то же http.conf php.ini C:wampbinmongodb содержимое , , (поэтому базы данных точно такие же) и тот же пакетный файл для запуска mongod.exe , что и мой компьютер Win7 Professional.

Но все же, все, что я могу сделать на своем компьютере Win7 Enterprise SP1, это подключиться через командную строку. Мой компьютер Win7 Professional phpinfo() содержит:
Раздел Mongo в php.ini Мой компьютер Win7 Enterprise SP1 не содержит никаких ссылок на MongoDB.

Содержимое пакетного файла, который я использую для запуска MongoDB:

 "C:wampbinmongodbbinmongod.exe" --logpath "C:wampbinmongodblogserror.log" --logappend --dbpath "C:wampbinmongodbdatadb" --directoryperdb --service
Net Start "MongoDB"
pause
 

Комментарии:

1. вы перезапустили apache? также проверьте, правильно ли вы отредактировали php.ini (тот, который указан phpinfo() как загруженный `

2. @Mchl Да, я перезапустил и да, я отредактировал правильный php.ini в соответствии с phpinfo()

3. Просто для проверки: для www php.ini C:wampbinapacheapache2.x.ybin включен. Для CLI php.ini находится в C:wampbinphpphp5.3.8

4. @Mchl phpinfo() говорит php.ini , что загруженный находится в C:wampbinapacheApache2.2.21binphp.ini , и это тот, к которому я добавил extension=php_mongo.dll .

5. Это должно быть хорошо. Я не уверен, на что еще посмотреть.

Ответ №1:

Проблема заключалась в драйвере PHP ( php_mongo.dll ). Apache / WAMP просто mongo-1.1.4-php5.3vc6ts по какой-то причине не понравилась версия. На моем компьютере с Windows 7 Professional была эта mongo-1.2.5-php5.3vc9ts версия. Это была единственная разница между двумя машинами.

Первоначально я использовал mongo-1.2.5-php5.3vc9ts версию драйвера на компьютере Windows 7 Enterprise, но перешел на mongo-1.1.4-php5.3vc6ts версию, когда устранял проблему. Таким образом, исходная проблема могла заключаться в том, что путь к базе datadb данных не существовал / не мог быть найден (и его нужно было указывать --dbpath при запуске / запуске mongod.exe ).

Комментарии:

1. Это очень сложно, потому что вам нужно установить php_mongo.dll , а не php_mongodb.dll . в библиотеке PECL присутствуют 2 пакета. Также для vc6 и vc9 требуется соответствующая установленная распространяемая библиотека C . Версия x86 или x64 зависит от скомпилированной версии Apache

Ответ №2:

Если эта проблема существует в php CLI, вы должны добавить extension=mongo.so в свой /etc/php5/cli/php.ini файл

Ответ №3:

Проверьте точное имя компилятора вашего двоичного файла PHP на странице phpinfo и попробуйте переустановить драйвер mongo, созданный на том же компиляторе.

http://www.php.net/manual/en/mongo.installation.php#mongo.installation .Windows

Теперь вы используете драйвер mongo, который был установлен в Visual Studio 6 с потокобезопасностью. (vs6ts означает это)

Аналогичная проблема была вызвана проблемой компилятора;

http://www.php.net/manual/en/mongo.installation.php#104223

Ответ №4:

В Ubuntu я использовал этот учебник . После установки повторите phpinfo() и проверьте, находится ли файл mongo.ini в правильном каталоге, указанном в phpinfo, с помощью «Сканировать этот каталог на наличие дополнительных файлов .ini»