Laravel Homestead Mongo install causing PHP error undefined symbol: php_json_serializable_ce in Unknown on line 0

前端 未结 2 1869
隐瞒了意图╮
隐瞒了意图╮ 2021-02-06 12:10

PHP Warning: PHP Startup: Unable to load dynamic library \'/usr/lib/php/20151012/mongodb.so\' - /usr/lib/php/20151012/mongodb.so: undefined symbol: php_json_

相关标签:
2条回答
  • 2021-02-06 12:53

    I had the same problem, I solved it by reverting to an older PECL mongodb version (1.1.9). There was an update to version 1.2.0 on November 29th, which is why the mongo-php-library also got updated to version 1.1.0.

    Here is what I did:

    sudo pecl uninstall mongodb
    sudo pecl install mongodb-1.1.9
    composer update
    

    The pecl commands will show the same warning, but the installation was successfully completed.

    I hope that the mongo-php-library will be fixed soon, so we're not stuck using an older PECL extension.

    0 讨论(0)
  • 2021-02-06 13:02

    I think the problem is here that mongodb.so depends on json.so. The solution is to load mongodb.so after json.so.

    I guess you are using the custom Mongo script for Homestead. The script outputs the mongodb.so module in php.ini file with the result that mongodb.so is loaded first. You should create a mongodb.ini file where mongodb.so is loaded.

    Create the .ini-file: /etc/php/7.0/mods-available/mongodb.ini with content:

    ; configuration for php mongo module
    ; priority=30
    extension=mongodb.so
    

    Give it priority 30, since json gets 20 (in my settings) to be sure it is loaded afterwards.

    Create a softlink of the ini-file to /etc/php/7.0/fpm/conf.d to make it available for the webserver.

    ln -s /etc/php/7.0/mods-available/mongodb.ini 30-mongodb.ini
    

    Reload webserver and php-fpm.

    sudo service [your webserver] restart && sudo service php7.0-fpm restart
    

    You are done! You can config the cli-version the same way

    0 讨论(0)
提交回复
热议问题