Docker & Laravel : configure: error: package requirements (oniguruma) 未得到满足

2022-08-30 07:58:24

任何人都可以帮我解决这个问题。

当我尝试从 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

和用于构建 Dockerfile 的 docker 命令

sudo docker build -t test .

答案 1

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


答案 2

只需从说明中删除即可。mbstringdocker-php-ext-install

该错误是由依赖关系问题引起的 - 扩展要求库使多字节正则表达式函数正常工作。从安装指南中mbstringoniguruma

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)

推荐