【问题标题】:Adding mbstring to docker image for laravel 5 app为 laravel 5 应用程序添加 mbstring 到 docker 镜像
【发布时间】:2017-10-27 14:49:18
【问题描述】:

我是 docker 新手,我正在尝试设置它以便与 Laravel 5.1 一起运行。我目前收到以下错误

Call to undefined function Illuminate\Foundation\Bootstrap\mb_internal_encoding() in /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/LoadConfiguration.php:43

我相信这是因为没有安装mbstring php 扩展。我试图将php-mbstring 添加到 Docker 文件中,但它似乎不起作用。

这是我的完整 Docker 文件

FROM php:5.6.30-fpm

    RUN apt-get update && apt-get install -y libmcrypt-dev \
        mysql-client libmagickwand-dev --no-install-recommends \
        && pecl install imagick \
        && docker-php-ext-install mcrypt pdo_mysql \
        && docker-php-ext-install php-mbstring 

然后我从应用程序文件夹运行sudo docker compose up。但这似乎并没有解决错误。我如何知道扩展是否安装正确?

编辑:我在下面包含了 docker-compose.yml 文件

version: '2'
services:

  # The Application
  app:
    build:
      context: ./
      dockerfile: app.dockerfile
    working_dir: /var/www
    volumes:
      - ./:/var/www
    environment:
      - "DB_PORT=3306"
      - "DB_HOST=database"

  # The Web Server
  web:
    build:
      context: ./
      dockerfile: web.dockerfile
    working_dir: /var/www
    volumes_from:
      - app
    ports:
      - 8080:80

  # The Database
  database:
    image: mysql:5.6
    volumes:
      - dbdata:/var/lib/mysql
    environment:
      - "MYSQL_DATABASE=homestead"
      - "MYSQL_USER=homestead"
      - "MYSQL_PASSWORD=secret"
      - "MYSQL_ROOT_PASSWORD=secret"
    ports:
        - "33061:3306"

volumes:
  dbdata:

【问题讨论】:

    标签: php laravel docker laravel-5 mbstring


    【解决方案1】:

    在 ubuntu 上,php-mbstring 依赖于 php-common 和特定于版本的 mbstring,例如 php7.1-mbstring,这可能会导致问题。您可以使用以下命令检查依赖关系;

    apt-cache depends php-mbstring
    

    【讨论】:

    • 感谢您的回复,我尝试使用命令 sudo docker exec -it 81a8f6eea495 apt-cache depends php-mbstring 从 docker 中查找依赖项,但它只返回“未找到包”。我还尝试将 common 和 php-common 添加到 docker 文件中,但我仍然遇到相同的错误。
    【解决方案2】:

    删除php- 前缀,它应该可以正常工作。也可以在前面的docker-php-ext-install 命令上运行:

    docker-php-ext-install mcrypt pdo_mysql mbstring

    【讨论】:

    • 感谢您的回复。我试图删除 php- 并且仍然得到相同的错误。关于在以前的 docker-php-ext-install 上运行的重要提示。
    • 奇数。你可以在你的问题上发布你的 docker-composer.yml 以便我们可以尝试重新创建问题吗? :)
    • 我已将 docker-compose.yml 文件添加到我的问题中。有机会时请看一看。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 2019-11-15
    • 2016-10-28
    • 1970-01-01
    • 2018-02-20
    • 2023-01-22
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多