dnmp多版本php管理(安装php8.1以及php8.2)

有的朋友说laradocker各方面更香,但是综合下来还是觉得dnmp的目录结构比较符合个人使用习惯。但是dnmp默认的php版本为5.4,5.6,7.4.278.0.9。而新版本的laravel-10需要的是php8.1版本,而后续的laravel需要至少php8.2。因此就想着在自我docker知识不够的情况下安装php8.2版本。
根据以下这篇文章:
dnmp 运行多PHP版本(PHP74安装支持swoole,kafka, redis) 及运行hyperf项目

\dnmp\services\php80中复制一份目录到\dnmp\services中改名为php82,然后分别修改以下文件:
\dnmp\.env:

#

# PHP82

#

# Available PHP_EXTENSIONS:

#

# pdo_mysql,zip,pcntl,mysqli,mbstring,exif,bcmath,calendar,

# sockets,gettext,shmop,sysvmsg,sysvsem,sysvshm,pdo_rebird,

# pdo_dblib,pdo_oci,pdo_odbc,pdo_pgsql,pgsql,oci8,odbc,dba,

# gd,intl,bz2,soap,xsl,xmlrpc,wddx,curl,readline,snmp,pspell,

# recode,tidy,gmp,imap,ldap,imagick,sqlsrv,mcrypt,opcache,

# redis,memcached,xdebug,swoole,pdo_sqlsrv,sodium,yaf,mysql,

# amqp,mongodb,event,rar,ast,yac,yar,yaconf,msgpack,igbinary,

# seaslog,varnish,xhprof,xlswriter,memcache,rdkafka,zookeeper,

# psr,phalcon,sdebug,ssh2,yaml,protobuf,hprose

#

# You can let it empty to avoid installing any extensions,

# or install multi plugins as:

# PHP_EXTENSIONS=pdo_mysql,mysqli,gd,curl,opcache

#

PHP82_VERSION=8.2.6

PHP82_PHP_CONF_FILE=./services/php82/php.ini

PHP82_FPM_CONF_FILE=./services/php82/php-fpm.conf

PHP82_LOG_DIR=./logs/php82
# 扩展,根据实际情况增减
PHP82_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache,redis,mongodb

docker-compose.yml:

php82:
    build:
      context: ./services/php82
      args:
        PHP_VERSION: php:${PHP82_VERSION}-fpm-alpine
        CONTAINER_PACKAGE_URL: ${CONTAINER_PACKAGE_URL}
        PHP_EXTENSIONS: ${PHP82_EXTENSIONS}
        TZ: "$TZ"
    container_name: php82
    expose:
    - 9501
    volumes:
    - ${SOURCE_DIR}:/www/:rw
    - ${PHP82_PHP_CONF_FILE}:/usr/local/etc/php/php.ini:ro
    - ${PHP82_FPM_CONF_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw
    - ${PHP82_LOG_DIR}:/var/log/php
    - ${DATA_DIR}/composer:/tmp/composer
    restart: always
    cap_add:
    - SYS_PTRACE
    networks:
    - default

这里需要注意一个地方

  1. 如果还是像8.0的配置一样写 php:${PHP80_VERSION}-fpm-alpine3.13,那么会提示ERROR [internal] load metadata for docker.io/library/php:8.2.6-fpm-alpine3.13,即使更改最新的alpine版本也会报错,因此改为php:8.2.6-fpm-alpine
  2. 复制过来的\dnmp\services\php80\extensions,如果已经安装了扩展需要删除已经安装的扩展,保留install.shinstall-php-extensions

最后执行命令:

docker-compose up -d

提示容器启动成功:

dnmp多版本php管理(安装php8.1以及php8.2)

php8.1亦是如此,但是需要注意的是,php版本号必须是真的存在此版本,可以去php官网查看版本号或者稳定的版本号。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!