PHPUnit требует mbstring хотя он есть
Запустил ларавел в докер контейнере. Написал тесты. Запускаю через артизан и получаю 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"]
Ответы (2 шт):
Можно сделать следующим образом:
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
Ларчик очень просто открывался (-_-), как обычно. Видимо косяк с правами, про такое тоже читал, но было лень лезть в тему прав линукс. Данная проблема решается запуском php artisan test непосредственно в докер контейнере, а не из вне, как это делал я. (Был уже вечер, видимо совсем затроил). Всем большое спасибо за участие, всех обнял, поднял, перевернул, поставил.