Docker & Laravel: configure: error: Paketanforderungen (oniguruma) wurden nicht erfüllt

12

Kann mir jemand bei diesem Problem helfen.

Wenn ich versuche, ein Docker-Image aus einer Docker-Datei für eine Laravel-Anwendung zu erstellen, wird folgende Fehlermeldung angezeigt:

Überprüfung auf Oniguruma ... keine Konfiguration: Fehler: Paketanforderungen (Oniguruma) wurden nicht erfüllt:

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.

Der Befehl '/ bin / sh -c docker-php-ext-install pdo mbstring' gab einen Code ungleich Null zurück: 1

Hier ist meine Docker-Datei:

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

und den Docker-Befehl zum Erstellen der Docker-Datei

sudo docker build -t test .
Amy Murphy
quelle

Antworten:

22

Einfach mbstringaus der docker-php-ext-installAnleitung entfernen .

Der Fehler wird durch ein Abhängigkeitsproblem verursacht. Für die mbstringErweiterung muss die onigurumaBibliothek Funktionen für reguläre Ausdrücke mit mehreren Byte funktionieren. Aus der Installationsanleitung :

Oniguruma ist für die Funktionen für reguläre Ausdrücke mit Unterstützung für Multibyte-Zeichen erforderlich. Oniguruma ist mit mbstring gebündelt. Ab On PHP 5.4.0 kann --with-onig [= DIR] angegeben werden, um die installierte Bibliothek zu verwenden, wenn Oniguruma bereits auf dem System installiert ist.

In dem von Ihnen verwendeten Image ist die Erweiterung jedoch bereits installiert und konfiguriert, sodass Sie nichts weiter tun müssen:

$> 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
quelle
Danke @kalatabe
Amy Murphy
16

Was @kalatabe gesagt hat, ist richtig. Falls Sie jedoch unbedingt sicherstellen möchten, dass mbstring installiert wird, können Sie auch libonig-devzu Ihrem hinzufügenapt-get install

kgx
quelle