新的PHP驱动程序1.2.3与laravel 4.2上的MongoDB 3.4不兼容

时间:2017-01-24 05:19:00

标签: php mongodb laravel laravel-4

我们在网络应用中使用以下软件赞...

  1. Laravel 4.2(PHP框架)
  2. 的MongoDB(3.4)
  3. PHP 5.6版(Ubuntu 14 LTS)

    因此,在将MongoDB版本从2.6更新到3.4后,某些API已关闭。(坐标搜索)

    所以我们发现需要从mongodb网站升级php驱动程序! (参考链接:http://php.net/manual/en/mongodb.installation.php

    - 在以下文件中进行了必要的更改

    -php.ini(/etc/php5/cli/php.ini)    -phpini(/etc/php5/apache2/php.ini)    -mongo.ini(/etc/php5/mods-available/mongo.ini)

    此更改只有一行:extension = mongo.so TO extension = mongodb.so

    但是仍然出现以下错误.. [Mon Jan 23 16:38:58.714244 2017] [:error] [pid 5612] [client 127.0.0.1:60816] PHP致命错误:/ var / www中未捕获的异常'ReflectionException',消息'Class MongoException不存在' /projectfolder/vendor/laravel/framework/src/Illuminate/Exception/Handler.php:310\nStack trace:\ n#0

    任何人都可以提供帮助吗?

    提前致谢

  4. enter image description here

2 个答案:

答案 0 :(得分:1)

1]使用以下MongoQuery

创建索引
db.user.createIndex( { "location" : "2dsphere" } )

2]确保使用以下命令

应用或不使用索引
db.user.ensureIndex( { "location" : "2dsphere" } )

3]检查MongoDB控制台中的Mongo查询。它正在运行

db.user.find(
    {"location" : {
        "$nearSphere": {
            "$geometry": {
                "type": "Point", "coordinates": [72.513723 , 23.041388] 
            },
        "$maxDistance": 8000,
        "$uniqueDocs": 1
        }
    }
})

经过两天的投资,我得到了这个解决方案,通过谷歌搜索和MongoDB上的不同步骤解决了这个错误

答案 1 :(得分:0)

请将您的mongo课程添加到app.php。就像在我的文件中一样,我添加了这样的内容。

   'Jenssegers\Mongodb\MongodbServiceProvider',

以上是我的app类。你必须添加你的库类。

第二个原因是,您是否在代码中使用db而不是DB?任何地方。 如果您已按照上述步骤操作,则在cmd中运行以下命令:

composer update, then composer dump-autoload

如果您需要任何帮助,请告诉我。我在Laravel 4.2中有同样的错误,我通过这个步骤解决了。