Heim  >  Fragen und Antworten  >  Hauptteil

So führen Sie ein Rollback auf PHP-Version 8.1 durch: Docker phpdockerio/php:8.1-fpm Build verwendet PHP-Version 8.2

Ich führe mein Projekt auf einem PHP-FPM-Docker-Container aus (Details zur Konfigurationsdatei unten). Wenn ich den Container erstelle und versuche, Composer auszuführen, erhalte ich eine Fehlermeldung, dass die PHP-Erweiterung fehlt. Ich denke jedoch, dass meine Build-Dateien diese Erweiterungen abdecken (siehe docker/php-fpm/Dockerfile unten).

Es stellt sich heraus, dass der Container mit PHP8.2 als Standardversion erstellt wurde. Ich konnte den Symlink ändern, um die Standardversion auf PHP8.1 zurückzusetzen, aber das scheint nicht die richtige Lösung zu sein. Kann jemand eine bessere Lösung vorschlagen?

Woher weiß ich, dass auf dem Container 8.2 ausgeführt wird: In den Container renne ich php --version und erhalte:

root@fee8cc9ff790:/application# php --version
PHP 8.2.0 (cli) (built: Dec  8 2022 13:56:08) (NTS)

Dann gab which php mir:

root@fee8cc9ff790:/application# which php
/usr/bin/php

Ich bin dem Symlink zur PHP-Binärdatei gefolgt, die in /etc/alternatives verlinkt ist:

phar -> /usr/bin/phar8.2
phar.phar -> /usr/bin/phar.phar8.2
php -> /usr/bin/php8.2
phpdbg -> /usr/bin/phpdbg8.2

Das scheint mir nicht richtig zu sein. Ich konnte sie wieder mit ihren 8.1-Versionen verknüpfen und jetzt scheint alles gut zu laufen, aber was passiert, wenn ich den Container neu erstelle?

Meine Dateidetails:

docker-compose.yml

###############################################################################
#                          Generated on docker.io                          #
###############################################################################
version: '3.9'
services:
    mailhog:
        image: 'mailhog/mailhog:latest'

    redis:
        image: 'redis:alpine'

    mysql:
        image: 'mysql:8.0.27'
        working_dir: /application
        platform: linux/amd64
        environment:
            - MYSQL_ROOT_PASSWORD=
            - MYSQL_DATABASE=
            - MYSQL_USER=
            - MYSQL_PASSWORD=

    webserver:
        image: 'nginx:alpine'
        working_dir: /application
        volumes:
            - '.:/application'
            - './docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf'

    php-fpm:
        build: docker/php-fpm
        working_dir: /application/
        volumes:
            - '.:/application'
            - './docker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/fpm/conf.d/99-overrides.ini'
            - './docker/php-fpm/php-ini-overrides.ini:/etc/php/8.1/cli/conf.d/99-overrides.ini'

docker-compose.override.yml

###############################################################################
#                          Generated on phpdocker.io                          #
###############################################################################
version: '3.9'
services:

    mailhog:
        ports:
            - '8026:8025'

    mysql:
        ports:
            - '33061:3306'

    webserver:
        ports:
            - '801:80'

docker/php-fpm/Dockerfile

FROM phpdockerio/php:8.1-fpm
WORKDIR "/application"

RUN apt-get update; 
    apt-get -y --no-install-recommends install 
        git 
        php-xdebug 
        php8.1-mysql 
        php8.1-sqlite 
        mysql-client 
        php8.1-redis; 
    apt-get clea  n; 
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*


P粉757640504P粉757640504372 Tage vor765

Antworte allen(1)Ich werde antworten

  • P粉418854048

    P粉4188540482023-11-06 09:14:25

    这原来是由我正在加载的扩展引起的。在 docker/php-fpm/Dockerfile 中,我安装了 php-xdebug ,这导致容器加载 PHP8.2

    指定8.1版本php8.1-xdebug解决了问题。

    感谢 luispabon 对我在 GitHub 上提出的问题的回应,他认为这一定是图像的问题。 https://github.com/phpdocker-io/base-images/issues/ 62

    Antwort
    0
  • StornierenAntwort