PHPUnit требует mbstring хотя он есть

Рейтинг: 0Ответов: 2Опубликовано: 03.04.2023

Запустил ларавел в докер контейнере. Написал тесты. Запускаю через артизан и получаю PHPUnit requires the "mbstring" extension.

Изменил докерфайл для данного контейнера добавив apt-get install -y libonig-dev && docker-php-ext-install mbstring. Пересобрал контейнер, но пхпюнит все равно бунтует. Читал что надо где-то как-то включить еще mbstring, но не знаю где и надо ли в дебиане это делать.

Сам Dockerfile:

FROM php:8.1.16-fpm

# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/

# Set working directory
WORKDIR /var/www

# Install dependencies
RUN apt-get update && apt-get install -y \
      apt-utils \
      libonig-dev \
      libpq-dev \
      libpng-dev \
      libzip-dev \
      zip unzip \
      git && \
      docker-php-ext-install pdo && \
      docker-php-ext-install pdo_pgsql && \
      docker-php-ext-install pgsql && \
      docker-php-ext-install bcmath && \
      docker-php-ext-install gd && \
      docker-php-ext-install zip && \
      docker-php-ext-install mbstring && \
      apt-get clean && \
      rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Install XDebug
RUN pecl install xdebug \
    && docker-php-ext-enable xdebug

# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Add user for laravel application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www

# Copy existing application directory contents
COPY . /var/www

# Copy existing application directory permissions
COPY --chown=www:www . /var/www

# Change current user to www
USER www

# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]

Ответы

▲ 0Принят

Ларчик очень просто открывался (-_-), как обычно. Видимо косяк с правами, про такое тоже читал, но было лень лезть в тему прав линукс. Данная проблема решается запуском php artisan test непосредственно в докер контейнере, а не из вне, как это делал я. (Был уже вечер, видимо совсем затроил). Всем большое спасибо за участие, всех обнял, поднял, перевернул, поставил.

▲ 0

Можно сделать следующим образом:

RUN apt-get update \
    && apt-get -y --no-install-recommends install \
    php8.1-mbstring \

Если будет недостаточно, то можно прописать в php.ini:

[mbstring]
mbstring.language = all
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = UTF-8
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_encoding = Off