laravel-mongodb icon indicating copy to clipboard operation
laravel-mongodb copied to clipboard

Laravel 9 mongodb driver issue inside docker

Open dejwsz opened this issue 1 year ago • 1 comments

  • Laravel-mongodb Version: v3.9.5
  • PHP Version: PHP 8.1.20 (cli) (built: Jun 14 2023 06:04:53) (NTS)
  • Database Driver & Version: mongodb/mongodb 1.15.0, MongoDB extension version => 1.15.3

Description:

What is interesting similar setup works well with Laravel 8 and Mongo driver. But Laravel 9 is not working anymore.

What is interesting DB seed work OK (executed by 'php artisan db:seed'):

 INFO  Seeding database.

  Database\Seeders\UsersTableSeeder ........................................................................................................ RUNNING
  Database\Seeders\UsersTableSeeder ................................................................................................. 248.23 ms DONE

But later during Laravel 9 bootstrap such error occurs ('php artisan serve --port=$PORT --host=0.0.0.0'):

   WARN  PHP Fatal error: Uncaught InvalidArgumentException: Driver [mongodb.

   WARN  Stack trace:

   WARN  #0 vendor/laravel/framework/src/Illuminate/Support/Manager.php(80): Illuminate\Support\Manager->createDriver().

   WARN  #1 vendor/laravel/framework/src/Illuminate/Session/SessionServiceProvider.php(52): Illuminate\Support\Manager->driver().

   WARN  #2 vendor/laravel/framework/src/Illuminate/Container/Container.php(885): Illuminate\Session\SessionServiceProvider->Illuminate\Session\{closure}().

   WARN  #3 vendor/laravel/framework/src/Illuminate/Container/Container.php(770): Illuminate\Container\Container->build().

   WARN  #4 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(856): Illuminate\Container\Container->resolve().

   WARN  #5 vendor/laravel/framework/src/Illuminate/Container/Container.php(706): Illuminate\Foundation\Application->resolve().

   WARN  #6 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(841): Illuminate\Container\Container->make().

   WARN  #7 vendor/laravel/framework/src/Illuminate/Container/Container.php(1431): Illuminate\Foundation\Application->make().

   WARN  #8 vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php(120): Illuminate\Container\Container->offsetGet().

   WARN  #9 vendor/laravel/framework/src/Illuminate/Container/Container.php(885): Illuminate\Routing\RoutingServiceProvider->Illuminate\Routing\{closure}().

   WARN  #10 vendor/laravel/framework/src/Illuminate/Container/Container.php(770): Illuminate\Container\Container->build().

   WARN  #11 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(856): Illuminate\Container\Container->resolve().

   WARN  #12 vendor/laravel/framework/src/Illuminate/Container/Container.php(706): Illuminate\Foundation\Application->resolve().

   WARN  #13 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(841): Illuminate\Container\Container->make().

   WARN  #14 vendor/laravel/framework/src/Illuminate/Container/Container.php(1431): Illuminate\Foundation\Application->make().

   WARN  #15 vendor/laravel/framework/src/Illuminate/Routing/RoutingServiceProvider.php(174): Illuminate\Container\Container->offsetGet().

   WARN  #16 vendor/laravel/framework/src/Illuminate/Container/Container.php(885): Illuminate\Routing\RoutingServiceProvider->Illuminate\Routing\{closure}().

   WARN  #17 vendor/laravel/framework/src/Illuminate/Container/Container.php(770): Illuminate\Container\Container->build().

   WARN  #18 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(856): Illuminate\Container\Container->resolve().

   WARN  #19 vendor/laravel/framework/src/Illuminate/Container/Container.php(706): Illuminate\Foundation\Application->resolve().

   WARN  #20 vendor/laravel/framework/src/Illuminate/Foundation/Application.php(841): Illuminate\Container\Container->make().

   WARN  #21 vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(120): Illuminate\Foundation\Application->make().

   WARN  #22 vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(805): app().

   WARN  #23 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(626): response().

   WARN  #24 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(554): Illuminate\Foundation\Exceptions\Handler->renderHttpException().

   WARN  #25 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(460): Illuminate\Foundation\Exceptions\Handler->prepareResponse().

   WARN  #26 vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php(377): Illuminate\Foundation\Exceptions\Handler->renderExceptionResponse().

   WARN  #27 app/Exceptions/Handler.php(59): Illuminate\Foundation\Exceptions\Handler->render().

   WARN  #28 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(233): App\Exceptions\Handler->render().

   WARN  #29 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(210): Illuminate\Foundation\Bootstrap\HandleExceptions->renderHttpResponse().

   WARN  #30 vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(270): Illuminate\Foundation\Bootstrap\HandleExceptions->handleException().

   WARN  #31 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}().

   WARN  #32 {main}.

   WARN  thrown in vendor/laravel/framework/src/Illuminate/Support/Manager.php on line 109.

   WARN  PHP Fatal error: Uncaught InvalidArgumentException: Driver [mongodb.

   WARN  Stack trace:

   WARN  #0 vendor/laravel/framework/src/Illuminate/Support/Manager.php(80): Illuminate\Support\Manager->createDriver().

Steps to reproduce

  1. Dockerfile:
FROM php:8.1-fpm-bullseye

ARG PORT=8000
ENV PORT=${PORT}

ARG VERSION="latest"
ARG CREATED="now"
ARG REVISION="latest"
LABEL org.opencontainers.image.version=$VERSION
LABEL org.opencontainers.image.revision=$REVISION
LABEL org.opencontainers.image.created=$CREATED

RUN apt-get update -y && \
    apt-get install -y autoconf pkg-config libssl-dev libzip-dev zlib1g-dev zip unzip && \
    pecl install mongodb && \
    docker-php-ext-enable mongodb && \
    pecl clear-cache && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

COPY --from=composer:2.5.8 /usr/bin/composer /usr/bin/composer

WORKDIR /var/www

RUN mkdir -p /var/www/vendor && \
    mkdir -p /var/www/storage/logs/ && \
    chown -R www-data:www-data /var/www/

USER www-data:www-data

COPY --chown=www-data:www-data ./backend ./

RUN composer install --no-progress --ignore-platform-reqs

USER root

RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
COPY docker/backend/opcache.ini $PHP_INI_DIR/conf.d/opcache.ini

USER www-data:www-data

ENV PATH="/var/www/vendor/bin:$PATH"

EXPOSE $PORT

ENTRYPOINT ["/var/www/docker/entrypoint.sh"]

Composer.json file:

{
    "name": "laravel/laravel",
    "type": "project",
    "version": "0.1.0",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "php": "^8.1",
        "aws/aws-sdk-php": "^3.225",
        "fruitcake/laravel-cors": "^2.0",
        "guzzlehttp/guzzle": "^7.0.1",
        "jenssegers/mongodb": "^3.9",
        "laravel/framework": "^9.0",
        "laravel/tinker": "^2.5",
        "nextapps/laravel-swagger-ui": "^0.6.0",
        "opcodesio/log-viewer": "^1.5",
        "robsontenorio/laravel-keycloak-guard": "^1.4",
        "vyuldashev/laravel-openapi": "^1.8"
    },
    "require-dev": {
        "spatie/laravel-ignition": "^1.0",
        "fakerphp/faker": "^1.9.1",
        "laravel/sail": "^1.0.1",
        "mockery/mockery": "^1.4.4",
        "nunomaduro/collision": "^6.1",
        "nunomaduro/larastan": "^1.0",
        "phpunit/phpunit": "^9.5.10"
    },
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover --ansi"
        ],
        "post-update-cmd": [
            "@php artisan vendor:publish --tag=laravel-assets --ansi --force"
        ],
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate --ansi"
        ]
    },
    "extra": {
        "laravel": {
            "dont-discover": [
            ]
        }
    },
    "config": {
        "optimize-autoloader": true,
        "preferred-install": "dist",
        "sort-packages": true
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

Expected behaviour

Driver is loaded.

Actual behaviour

Some debug info:

composer show mongodb/mongodb:

name     : mongodb/mongodb
descrip. : MongoDB driver library
keywords : database, driver, mongodb, persistence
versions : * 1.15.0
type     : library
license  : Apache License 2.0 (Apache-2.0) (OSI approved) https://spdx.org/licenses/Apache-2.0.html#licenseText
homepage : https://jira.mongodb.org/browse/PHPLIB
source   : [git] https://github.com/mongodb/mongo-php-library.git 3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8
dist     : [zip] https://api.github.com/repos/mongodb/mongo-php-library/zipball/3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8 3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8
path     : /var/www/vendor/mongodb/mongodb
names    : mongodb/mongodb

support
issues : https://github.com/mongodb/mongo-php-library/issues
source : https://github.com/mongodb/mongo-php-library/tree/1.15.0

autoload
files
psr-4
MongoDB\ => src/

requires
ext-hash *
ext-json *
ext-mongodb ^1.15.0
jean85/pretty-package-versions ^1.2 || ^2.0.1
php ^7.2 || ^8.0
symfony/polyfill-php80 ^1.19

requires (dev)
doctrine/coding-standard ^9.0
squizlabs/php_codesniffer ^3.6
symfony/phpunit-bridge ^5.2
vimeo/psalm ^4.28
php --ri mongodb:

mongodb

MongoDB support => enabled
MongoDB extension version => 1.15.3
MongoDB extension stability => stable
libbson bundled version => 1.23.4
libmongoc bundled version => 1.23.4
libmongoc SSL => enabled
libmongoc SSL library => OpenSSL
libmongoc crypto => enabled
libmongoc crypto library => libcrypto
libmongoc crypto system profile => disabled
libmongoc SASL => disabled
libmongoc ICU => disabled
libmongoc compression => enabled
libmongoc compression snappy => disabled
libmongoc compression zlib => enabled
libmongoc compression zstd => disabled
libmongocrypt bundled version => 1.5.2
libmongocrypt crypto => enabled
libmongocrypt crypto library => libcrypto
crypt_shared library version => unknown

Directive => Local Value => Master Value
mongodb.debug => no value => no value
composer show jenssegers/mongodb:

name     : jenssegers/mongodb
descrip. : A MongoDB based Eloquent model and Query builder for Laravel (Moloquent)
keywords : database, eloquent, laravel, model, moloquent, mongo, mongodb
versions : * v3.9.5
type     : library
license  : MIT License (MIT) (OSI approved) https://spdx.org/licenses/MIT.html#licenseText
homepage : https://github.com/jenssegers/laravel-mongodb
source   : [git] https://github.com/jenssegers/laravel-mongodb.git 6ce35ace85a5946f943d7f493f93aebb9a6d129d
dist     : [zip] https://api.github.com/repos/jenssegers/laravel-mongodb/zipball/6ce35ace85a5946f943d7f493f93aebb9a6d129d 6ce35ace85a5946f943d7f493f93aebb9a6d129d
path     : /var/www/vendor/jenssegers/mongodb
names    : jenssegers/mongodb

support
issues : https://github.com/jenssegers/laravel-mongodb/issues
source : https://github.com/jenssegers/laravel-mongodb/tree/v3.9.5

autoload
psr-4
Jenssegers\Mongodb\ => src/

requires
illuminate/container ^9.0
illuminate/database ^9.0
illuminate/events ^9.0
illuminate/support ^9.0
mongodb/mongodb ^1.11

requires (dev)
doctrine/dbal ^2.13.3|^3.1.4
mockery/mockery ^1.3.1
orchestra/testbench ^7.0
phpunit/phpunit ^9.5.8

suggests
jenssegers/mongodb-sentry Add Sentry support to Laravel-MongoDB
jenssegers/mongodb-session Add MongoDB session support to Laravel-MongoDB

dejwsz avatar Jun 19 '23 10:06 dejwsz