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

Amy*_*phy 66 php laravel docker dockerfile

谁能帮我解决这个问题。

当我尝试从 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.
Run Code Online (Sandbox Code Playgroud)

命令“/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
Run Code Online (Sandbox Code Playgroud)

以及用于构建 Dockerfile 的 docker 命令

sudo docker build -t test .
Run Code Online (Sandbox Code Playgroud)

小智 125

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

  • 我还必须将“libzip-dev”依赖项添加到 apt-get 安装中 (4认同)
  • 非常好的、真实的答案。 (3认同)

Kal*_*nov 115

只需mbstringdocker-php-ext-install指令中删除。

该错误是由依赖问题引起的 -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)
Run Code Online (Sandbox Code Playgroud)