Неустранимая ошибка PHP: класс MongoDate не найден

Я использую литиевую консоль (lithium/console/li3) для запуска какой-то команды и получаю эту ошибку:

PHP Fatal error: Class 'MongoDate' not found

Детали моей системы:

  • сервер монгодб: 2.6.1
  • php-клиент mongodb: 1.5.2
  • апач 2.4.7
  • PHP 5.5.9-1Убунту4

$Requests = Requests::find('all', array('conditions'=>array( 'expired'=>array('<'=>new \MongoDate(time())), 'processed'=>0 )));

У меня нет этой ошибки при запуске этого кода в более старой версии системы

  • Версия PHP 5.3.10-1ubuntu3.11
  • Сервер Apache/2.2.22 (Ubuntu)
  • клиент монгодб: 1.4.5
  • сервер монгодб: 2.4.10

Спасибо.

Еще одна вещь: я пытаюсь создать простой скрипт

$date = new MongoDate();

он работает без проблем через веб-сервер (браузер), но если я использую команду php для запуска этого файла, я получаю ту же ошибку: Class 'MongoDate' not found Итак, я считаю, что это проблема с командой php.


person Minh Nguyen    schedule 26.05.2014    source источник


Ответы (2)


Убедитесь, что ваше расширение mongodb загружено.

var_dump(extension_loaded('mongodb'));

Если нет, вы должны загрузить его в php.ini.

person Wahyu Kristianto    schedule 26.05.2014
comment
ты прав. Я настроил сервер работает только с php-cgi, а не с cli. Поэтому я не добавлял расширение mongodb в cli. После этого он работает. - person Minh Nguyen; 26.05.2014
comment
Я исправил, добавив extension=mongodb.so в мой php.ini php-fpm - person Lucas Serafim; 27.05.2017

Для тех, кто пришел сюда, используя PHP7, классы были переименованы:

MongoDate теперь MongoDB\BSON\UTCDateTime

Также я обнаружил, что теперь требуется миллисекунды вместо секунд, поэтому убедитесь, что вы умножили ввод на 1000, например:

$date = new \MongoDB\BSON\UTCDateTime(strtotime('yesterday') * 1000);
person acidjazz    schedule 21.10.2016
comment
Это мне очень помогло. Спасибо! - person Merlevede; 14.05.2017
comment
Это мне очень помогло... Большое спасибо - person Kartik Bhat; 23.04.2020