Код: Выделить всё
Configuration File (php.ini) Path
=> /usr/local/etc/php
________________________________________________________________
Configuration
Core
PHP Version => 8.3.15
extension_dir => /usr/local/lib/php/extensions/no-debug-non-zts-20230831
include_path => .:/usr/local/lib/php => .:/usr/local/lib/php
Tokenizer Support => enabled
Session Support => enabled
fileinfo support => enabled
SimpleXML support => enabled
DOM/XML => enabled
ctype functions => enabled
cURL support => enabled
hash support => enabled
iconv support => enabled
json support => enabled
Multibyte Support => enabled
OpenSSL support => enabled
PCRE Support => enabled
Phar => enabled
sodium support => enabled
XML Support => active
libXML support => active
XMLReader => enabled
XMLWriter => enabled
Код: Выделить всё
ext-dom n/a missing
ext-fileinfo n/a missing
ext-session n/a missing
ext-tokenizer n/a missing
ext-xml n/a missing
ext-xmlwriter n/a missing
Код: Выделить всё
Problem 1..N
- requires ext-session *
- requires ext-fileinfo *
- requires ext-tokenizer *
- requires ext-dom *
* -> it is missing from your system. Install or enable PHP's session extension.
Your lock file does not contain a compatible set of packages.
Please run composer update.
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php83/php.ini
- /etc/php83/conf.d/00_curl.ini
- /etc/php83/conf.d/00_iconv.ini
- /etc/php83/conf.d/00_mbstring.ini
- /etc/php83/conf.d/00_openssl.ini
- /etc/php83/conf.d/00_zip.ini
- /etc/php83/conf.d/01_phar.ini
Код: Выделить всё
Checking composer.json: OK
Checking composer.lock: OK
Checking platform settings: OK
Checking git settings: No git process found
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys: FAIL
Missing pubkey for tags verification
Missing pubkey for dev verification
Run composer self-update --update-keys to set them up
Checking Composer version: OK
Checking Composer and its dependencies for vulnerabilities: OK
Composer version: 2.8.4
PHP version: 8.3.15
PHP binary path: /usr/bin/php83
OpenSSL version: OpenSSL 3.3.2 3 Sep 2024
curl version: 8.11.1 libz 1.3.1 ssl OpenSSL/3.3.2
zip: extension present, unzip present, 7-Zip present (7z)
Код: Выделить всё
FROM php:8.3-fpm-alpine
WORKDIR /var/www/html
COPY --chown=www-data:www-data --chmod=644 composer.json composer.lock .
RUN apk update \
&& apk upgrade \
&& apk add --no-cache \
libpq-dev \
libzip-dev \
libpng-dev \
libjpeg-turbo-dev \
freetype-dev \
composer \
&& docker-php-ext-configure zip \
&& docker-php-ext-configure pdo_pgsql --with-pdo-pgsql=/usr/include/ \
&& docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd pdo pgsql pdo_pgsql \
&& docker-php-ext-enable gd pgsql pdo pdo_pgsql \
&& rm -vrf /var/cache/apk/* \
&& mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" \
&& composer install
USER www-data
EXPOSE 9000
CMD ["php-fpm"]
Код: Выделить всё
COPY --from=composer/composer:latest-bin /composer /usr/bin/composer
После дальнейшего изучения проблемы я обнаружил, что ручная установка Composer в контейнере Docker решила проблему. несоответствие между phpinfo() и обнаружением расширения Composer. Я использовал следующие методы с официального сайта Composer:
Метод 1:
Код: Выделить всё
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Проверка.
После установки Composer вручную я выполнил проверку композитора: платформа-reqs еще раз. На этот раз все необходимые расширения были успешно обнаружены:
Код: Выделить всё
ext-dom 20031129 success
ext-fileinfo 8.3.15 success
ext-session 8.3.15 success
ext-tokenizer 8.3.15 success
ext-xml 8.3.15 success
ext-xmlwriter 8.3.15 success
Код: Выделить всё
Checking composer.json: OK
Checking composer.lock: OK
Checking platform settings: OK
Checking git settings: No git process found
Checking http connectivity to packagist: OK
Checking https connectivity to packagist: OK
Checking github.com rate limit: OK
Checking disk free space: OK
Checking pubkeys:
Tags Public Key Fingerprint: 57815BA2 7E54DC31 7ECC7CC5 573090D0 87719BA6 8F3BB723 4E5D42D0 84A14642
Dev Public Key Fingerprint: 4AC45767 E5EC2265 2F0C1167 CBBB8A2B 0C708369 153E328C AD90147D AFE50952
OK
Checking Composer version: OK
Checking Composer and its dependencies for vulnerabilities: OK
Composer version: 2.8.4
PHP version: 8.3.15
PHP binary path: /usr/local/bin/php
OpenSSL version: OpenSSL 3.3.2 3 Sep 2024
curl version: 8.11.1 libz 1.3.1 ssl OpenSSL/3.3.2
zip: extension present, unzip present, 7-Zip present (7z)
Не могу понять, кто именно вызывает ошибку: композитор или сам репозиторий.
UPD...
Я снова покопался и, кажется, нашел основную причину проблемы. Спасибо @hakre
Поведение Composer:
При установке через apk добавьте, Composer внутри образ Docker на базе Alpine настроен на использование двоичного файла php83, расположенного в /usr/bin/php83. Вместе с ним также подключаются следующие пакеты (вероятно, как зависимости):
Код: Выделить всё
php83Несоответствие путей:
Это противоречит фактический путь к исполняемому файлу PHP (
Код: Выделить всё
/usr/local/bin/phpЭто несоответствие в путях к исполняемым файлам PHP, вероятно, объясняет, почему Composer не смог распознать доступные расширения PHP в контейнере, несмотря на то, что они были правильно включены.
Подробнее здесь: https://stackoverflow.com/questions/793 ... hp-extensi
Мобильная версия