Docker & Laravel: configure: erreur: les exigences du package (oniguruma) n'étaient pas remplies

12

Quelqu'un peut-il m'aider avec ce problème.

Lorsque j'essaie de créer une image docker à partir d'un fichier docker pour l'application laravel, j'obtiens cette erreur:

vérification de oniguruma ... pas de configuration: erreur: les exigences du package (oniguruma) n'étaient pas remplies:

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.

La commande '/ bin / sh -c docker-php-ext-install pdo mbstring' a renvoyé un code différent de zéro: 1

Voici mon 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

et la commande docker pour construire le Dockerfile

sudo docker build -t test .
Amy Murphy
la source

Réponses:

22

Retirez simplement mbstringde l' docker-php-ext-installinstruction.

L'erreur est causée par un problème de dépendance - l' mbstringextension nécessite que la onigurumabibliothèque fasse fonctionner les fonctions d'expression régulière multi-octets. Depuis le guide d'installation :

Oniguruma est nécessaire pour les fonctions d'expression régulière avec prise en charge des caractères multi-octets. Oniguruma est fourni avec mbstring. Depuis PHP 5.4.0, si Oniguruma est déjà installé sur le système, --with-onig [= DIR] peut être spécifié pour utiliser la bibliothèque installée.

Cependant, dans l'image que vous utilisez, l'extension est déjà installée et configurée, vous n'avez donc rien d'autre à faire:

$> 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
la source
Merci @kalatabe
Amy Murphy
16

Ce que @kalatabe a dit est correct. Mais au cas où vous vouliez absolument vous assurer que mbstring est installé, vous pouvez également ajouter libonig-devà votreapt-get install

kgx
la source