Docker & Laravel: configure: error: Пакетні вимоги (oniguruma) не були виконані


12

Хтось може мені допомогти з цією проблемою.

Коли я намагаюся створити зображення докера з dockerfile для програми laravel, я отримую цю помилку:

перевірка наявності 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 .

Відповіді:


22

Просто видаліть mbstringз docker-php-ext-installінструкції.

Помилка викликана проблемою залежності - mbstringрозширення вимагає, щоб 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-devйогоapt-get install

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.