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


12

谁能帮助我解决这个问题。

当我尝试从laravel应用的dockerfile创建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

和docker命令构建Dockerfile

sudo docker build -t test .

Answers:


22

只需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)

感谢@kalatabe
艾米·墨菲

16

@kalatabe说的是正确的。但是,如果您绝对要确保已安装mbstring,也可以将其添加libonig-devapt-get install

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.