Docker & Laravel:配置:错误:未满足包要求(oniguruma)

新手上路,请多包涵

谁能帮我解决这个问题。

当我尝试从 dockerfile 为 laravel 应用程序创建 docker 映像时,出现此错误:

检查oniguruma …没有配置:错误:不满足包要求(oniguruma):

>  No package 'oniguruma' found
>
> Consider adjusting the PKG_CONFIG_PATH environment variable if you
> installed software in a non-standard prefix.
>
> Alternatively, you may set the environment variables ONIG_CFLAGS
> and ONIG_LIBS to avoid the need to call pkg-config.
> See the pkg-config man page for more details.
>
> ```
>
> 命令 '/bin/sh -c docker-php-ext-install pdo mbstring' 返回一个非零代码:1

这是我的 Dockerfile:

FROM php:7 RUN apt-get update -y && apt-get install -y openssl zip unzip git RUN curl -sS https://getcomposer.org/installer | php – –install-dir=/usr/local/bin –filename=composer RUN docker-php-ext-install pdo mbstring WORKDIR /app COPY app /app # this copies all the app files to a folder called app RUN composer install

CMD php artisan serve –host=0.0.0.0 –port=8000 EXPOSE 8000


以及构建 Dockerfile 的 docker 命令

sudo docker build -t test .

”`

原文由 Amy Murphy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 966
2 个回答

只需从 docker-php-ext-install 指令中删除 mbstring 即可。

该错误是由依赖问题引起的 - mbstring 扩展需要 oniguruma 库才能使多字节正则表达式函数工作。从 安装指南

Oniguruma 对于支持多字节字符的正则表达式函数是必需的。 Oniguruma 与 mbstring 捆绑在一起。从 PHP 5.4.0 开始,如果系统上已经安装了 Oniguruma,可以指定 –with-onig[=DIR] 以使用已安装的库。

但是,在您使用的映像中,扩展程序已经安装和配置,因此您无需执行任何其他操作:

 $> docker run --rm -it php:7 php -r "var_dump(mb_ereg_match('^99.*', '123456'));"
bool(false)

$> docker run --rm -it php:7 php -r "var_dump(mb_ereg_match('^12.*', '123456'));"
bool(true)

原文由 kalatabe 发布,翻译遵循 CC BY-SA 4.0 许可协议

@kalatabe 说的是正确的。但如果您绝对想确保安装了 mbstring,您也可以将 libonig-dev 添加到您的 apt-get install

原文由 kgx 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题