成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

升級PHP7 jenssegers/mongodb expected to be a referen

tangr206 / 667人閱讀

摘要:上的擴展有兩個,都是官方出品的,一個叫,一個是,前者已經(jīng)被官方廢棄,不再提供穩(wěn)定的更新,官方推薦使用后者,并且后者是支持的。在上搜索即可找到,也可以通過安裝。使用作為中間件,不用修改現(xiàn)有代碼。

pecl上的mongodb擴展有兩個,都是官方出品的,一個叫mongo,一個是mongodb,前者已經(jīng)被官方廢棄,不再提供穩(wěn)定的更新,官方推薦使用后者,并且后者是支持php7的。在pecl上搜索mongodb即可找到,也可以通過pecl install mongodb安裝。mongo和mongodb的結(jié)構(gòu)完全不同,使用方式也大相徑庭,不過官方有個php適配包,可以讓mongodb看上去和mongo使用體驗近似 https://github.com/mongodb/mo...

以上來自這個問題

目前用的 laravel-mongodb

WARNING: The old mongo PHP driver is not supported anymore in versions >= 3.0.

因為現(xiàn)在用的2.1 版本,而升級PHP7后用的mongodb 擴展,不兼容之前的mongo擴展,所以現(xiàn)在有2個選擇:

1.升級到3.0版本。
2.使用 https://github.com/alcaeus/mo... 作為中間件,不用修改現(xiàn)有代碼。

第二個方案來自 http://php.net/manual/zh/set....
There is an adapter - so old MongoClient / MongoDB code will run on the new PHP7/Mongo mess
https://github.com/alcaeus/mo...

第一個方案就不說了,現(xiàn)在說第二個。

composer config "platform.ext-mongo" "1.6.16" && composer require alcaeus/mongo-php-adapter

然后測試下

Message::create([ "title"=>"標(biāo)題","content"=>"內(nèi)容22","time"=>time()]);
提示:

ErrorException in Collection.php line 42:
Parameter 1 to MongoCollection::insert() expected to be a reference, value given

有問題怎么辦?當(dāng)然搜索啊,于是 Google ,不得不說谷歌牛逼,第一條結(jié)果就找到了 https://github.com/alcaeus/mo...

再看看百度

翻不了bing.com 也行啊

或者搜 issue

打開第二個鏈接 https://github.com/jenssegers...
看最后這個鏈接 https://github.com/zamrih/lar...

然后修改源文件 jenssegers/mongodb/src/Jenssegers/Mongodb/Collection.php 雖然能解決,但這不是個好的辦法。

/**
      * Handle specific insert call.
      * Cannot be handled dynamically because a reference needs to be passed
      * @param  array|object   $document
      * @param  array   $options
      * @return mixed
      */
     public function insert(&$document, array $options = [])
     {
         return $this->__call("insert", array(&$document, $options));
     }
     
    /**
      * Handle specific batchInsert call.
      * Cannot be handled dynamically because a reference needs to be passed
      * @param  array   $a
      * @param  array   $options
      * @return mixed
      */
     public function batchInsert(array &$a, array $options = [])
     {
         return $this->__call("batchInsert", array(&$a, $options));
     }
     
    /**
      * Handle specific save call.https://github.com/zamrih/laravel-mongodb/commit/8c3b4aaaee773e0c2968b4ff215ccec5305394e2
      * Cannot be handled dynamically because a reference needs to be passed
      * @param  array|object   $document
      * @param  array   $options
      * @return mixed
      */
     public function save(&$document, array $options = [])
     {
         return $this->__call("save", array(&$document, $options));
     }

其實 https://github.com/alcaeus/mo... 給出提示了
The insert, batchInsert, and save methods take the first argument by reference. While the original API does not explicitely specify by-reference arguments it does add an ID field to the objects and documents given.

接著又出現(xiàn)新問題:
Fatal error: Call to undefined method MongoDBDriverReadConcern::isDefault() in ..srcOperationFind.php on line 193
搜索下
https://github.com/alcaeus/mo...
https://github.com/mongodb/mo...
https://github.com/mongodb/mo...

https://github.com/mongodb/mo... 這個提交增加了MongoDBDriverReadConcern::isDefault() 但他要求 MongoDB擴展1.3.0+

因為默認版本是PHP5,所以 pecl install mongodb 會提示

pecl config-show

pecl/mongodb requires PHP (version >= 5.5.0, version <= 7.99.99), installed version is 5.3.29
No valid packages found
install failed

ll /data/php7/bin/
total 124692
-rwxr-xr-x 1 root root      842 Feb  4  2016 pear
-rwxr-xr-x 1 root root      863 Feb  4  2016 peardev
-rwxr-xr-x 1 root root      779 Feb  4  2016 pecl
lrwxrwxrwx 1 root root        9 Feb  4  2016 phar -> phar.phar
-rwxr-xr-x 1 root root    14834 Feb  4  2016 phar.phar
-rwxr-xr-x 1 root root 42332852 Feb  4  2016 php
-rwxr-xr-x 1 root root 42161587 Feb  4  2016 php-cgi
-rwxr-xr-x 1 root root     3583 Feb  4  2016 php-config
-rwxr-xr-x 1 root root 43141643 Feb  4  2016 phpdbg
-rwxr-xr-x 1 root root     4537 Feb  4  2016 phpize

/data/php7/bin/pecl install mongodb

而現(xiàn)在用的是1.1.6版本,那只好升級了 到 http://pecl.php.net/package/m... 下載最新版本 http://pecl.php.net/get/mongo...

tar -zxf mongodb-1.5.2.tgz
cd mongodb-1.5.2
which php7
/data/php7/bin/phpize
which php-config
./configure --with-php-config=/data/php7/bin/php-config
make && make install
ll /data/php7/lib/php/extensions/no-debug-zts-20151012/
php7 -i |grep extension_dir
extension_dir => /data/php7/lib/php/extensions/no-debug-zts-20151012 => /data/php7/lib/php/extensions/no-debug-zts-20151012
sqlite3.extension_dir => no value => no value

php7 --ini
Configuration File (php.ini) Path: /data/php7/etc/
Loaded Configuration File:         /data/php7/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed:      (none)
vi /data/php7/etc/php.ini
extension=mongodb.so
php7 -m |grep mongodb
php7 -i|grep mongodb

鏈接:
https://github.com/alcaeus/mo...
https://github.com/mongodb/mo...
https://github.com/alcaeus/mo...
http://php.net/manual/en/mong...
http://php.net/manual/zh/mong...
http://php.net/manual/zh/set....
https://github.com/mongodb/mo...
https://secure.php.net/manual...
https://github.com/mongodb/mo...
https://github.com/alcaeus/mo...
pecl 更換對應(yīng)php版本
車輪升級PHP7踩過的一些坑
《PHP 開發(fā)者實踐》
PHP 手冊拾遺
PHP 7 升級實踐
php7cc 輔助進行代碼檢查
php5 php7不兼容的地方
PHP7內(nèi)核剖析
升級PHP7操作MongoDB
一篇寫給準(zhǔn)備升級PHP7的小伙伴的文章

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/19357.html

相關(guān)文章

  • 升級PHP7 jenssegers/mongodb expected to be a referen

    摘要:上的擴展有兩個,都是官方出品的,一個叫,一個是,前者已經(jīng)被官方廢棄,不再提供穩(wěn)定的更新,官方推薦使用后者,并且后者是支持的。在上搜索即可找到,也可以通過安裝。使用作為中間件,不用修改現(xiàn)有代碼。 pecl上的mongodb擴展有兩個,都是官方出品的,一個叫mongo,一個是mongodb,前者已經(jīng)被官方廢棄,不再提供穩(wěn)定的更新,官方推薦使用后者,并且后者是支持php7的。在pecl上搜索...

    BicycleWarrior 評論0 收藏0
  • laravel安裝jenssegers/laravel-mongodb拓展,以及遇到的坑

    摘要:再次打開包內(nèi)源碼,發(fā)現(xiàn)了如下的細節(jié)敲黑板注意看路徑,此時是包內(nèi)知道原理之后,于是在配置文件中做了如下修改至此,,收工 項目中使用了mongoDB,所以就到最大的同性交友網(wǎng)站找到了星星最多的jenssegers/laravel-mongodb 包安裝 1、根據(jù)README,找到本地laravel對應(yīng)的包版本showImg(https://segmentfault.com/img/bVbr...

    icattlecoder 評論0 收藏0
  • laravel安裝jenssegers/laravel-mongodb拓展,以及遇到的坑

    摘要:再次打開包內(nèi)源碼,發(fā)現(xiàn)了如下的細節(jié)敲黑板注意看路徑,此時是包內(nèi)知道原理之后,于是在配置文件中做了如下修改至此,,收工 項目中使用了mongoDB,所以就到最大的同性交友網(wǎng)站找到了星星最多的jenssegers/laravel-mongodb 包安裝 1、根據(jù)README,找到本地laravel對應(yīng)的包版本showImg(https://segmentfault.com/img/bVbr...

    fizz 評論0 收藏0
  • 下載量最高的「50 」個 Laravel 擴展包

    摘要:簡介另一個令人喜歡的地方,是擁有活躍的開發(fā)者社區(qū),而活躍的開發(fā)者社區(qū)帶來的,是繁華的擴展包生態(tài)該項目統(tǒng)計了目前下載量最高的個擴展包。記得喲相信下面這些擴展包會讓你的編碼更加高效。排名下載量排名包地址下載次數(shù)描述圖片處理。 簡介 Laravel 另一個令人喜歡的地方,是擁有活躍的開發(fā)者社區(qū),而活躍的開發(fā)者社區(qū)帶來的,是繁華的擴展包生態(tài) ———— @Summer 該項目統(tǒng)計了目前 pack...

    liaorio 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<