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

新的PHP驱动程序1.2.3与laravel 4.2上的MongoDB 3.4不兼容,php,mongodb,laravel,laravel-4,Php,Mongodb,Laravel,Laravel 4,我们正在我们的web应用程序中使用以下软件,如 Laravel4.2(PHP框架) MongoDB(3.4) PHP版本5.6(Ubuntu 14 LTS) 因此,在将MongoDB版本从2.6更新到3.4之后,一些API关闭了。(坐标搜索) 所以我们发现需要从mongodb站点升级php驱动程序! (参考链接:) -在以下文件中进行必要的更改 -php.ini(/etc/php5/cli/php.ini) -phpini(/etc/php5/apache2/php.ini) -mongo.in

我们正在我们的web应用程序中使用以下软件,如

  • Laravel4.2(PHP框架)
  • MongoDB(3.4)
  • PHP版本5.6(Ubuntu 14 LTS)

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

    所以我们发现需要从mongodb站点升级php驱动程序! (参考链接:)

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

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

    更改仅在一行中:从extension=mongo.so到extension=mongodb.so

    但是下面的错误仍然在发生。。 [Mon Jan 23 16:38:58.714244 2017][:error][pid 5612][client 127.0.0.1:60816]PHP致命错误:未捕获异常“ReflectionException”,消息为/var/www/projectfolder/vendor/laravel/framework/src/illighted/exception/Handler.PHP:310\n堆栈跟踪:\n#0

    有人能帮忙吗

    提前谢谢


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

       'Jenssegers\Mongodb\MongodbServiceProvider',
    
    上面是我的应用程序类。您必须添加库类

    第二个原因是,您是否在代码中使用db而不是db?在任何地方 如果您遵循了上述步骤,请在cmd中运行以下命令:

    composer update, then composer dump-autoload
    

    如果你需要帮助,一定要告诉我。我在Laravel 4.2中也有同样的错误,我通过以下步骤解决了。

    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上执行不同的rnd步骤,得到了这个解决方案,解决了这个bug

    谢谢您的回答,但在Mongo上出现rnd查询错误之后。我发现在新版本MongoDB 3.4中,在调用地理坐标搜索API之前需要对集合进行索引。所以createIndex是这个查询的最终解决方案