Docker & Laravel : configure: error: Package requirements (oniguruma) were not met

PhpLaravelDockerDockerfile

Php Problem Overview


Can anyone help me with this problem.

When i try to create a docker image from a dockerfile for laravel application i get this error:

> checking for oniguruma... no > configure: error: Package requirements (oniguruma) were not met: >
> 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. > The command '/bin/sh -c docker-php-ext-install pdo mbstring' returned a non-zero code: 1

Here is my 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

and the docker command to build the Dockerfile

sudo docker build -t test .

Php Solutions


Solution 1 - Php

What @kalatabe said is correct. But in case you absolutely wanted to make sure mbstring gets installed, you can also add libonig-dev to your apt-get install

Solution 2 - Php

Just remove mbstring from the docker-php-ext-install instruction.

The error is caused by a dependency problem - the mbstring extension requires the oniguruma library to make multibyte regular expression functions work. From the installation guide:

> Oniguruma is necessary for the regular expression functions with multibyte character support. Oniguruma is bundled with mbstring. As of PHP 5.4.0, if Oniguruma is already installed on the system, --with-onig[=DIR] can be specified to use the installed library.

However, in the image that you're using, the extension is already installed and configured, so you don't need to do anything else:

$> 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)

Solution 3 - Php

for phpbrew user,

you can solve this error by removing the mbstring variant from installation command using -mbstring parameter.

Example:

phpbrew install php-7.4 +default -mbstring

Solution 4 - Php

If your are using a distro with yum package manager. Execute this command:

sudo yum install -y oniguruma-devel

Solution 5 - Php

This helped me on Mac

  • brew install oniguruma

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAmy MurphyView Question on Stackoverflow
Solution 1 - PhpkgxView Answer on Stackoverflow
Solution 2 - PhpkalatabeView Answer on Stackoverflow
Solution 3 - PhpLaode Muhammad Al FatihView Answer on Stackoverflow
Solution 4 - PhpSeanView Answer on Stackoverflow
Solution 5 - PhpNarenView Answer on Stackoverflow