标签 PHP 下的文章

使用 update-alternatives 进行版本切换

一、 创建 phpv.sh 文件

#!/bin/bash

VERSION=$1

if [ -z "$VERSION" ];then
  echo "请输入要切换的PHP版本"
  echo "可用版本列表: $(dir /etc/php)"
  echo "当前版本信息:"
  php -v
  exit
fi

sudo update-alternatives --set php /usr/bin/php${VERSION}

php -v

二、 添加执行权限

chmod+x phpv.sh

三、 创建别名, .profile 增加如下代码

alias phpv='/home/用户目录/script/phpv.sh'

安装前修改以下目录和文件权限为777

chmod 777 runtime -R
chmod 777 application/database.php
chmod 777 application/config.php
chmod 777 public
chmod 777 application/extra/site.php
chmod 777 application/admin/command/Install
chmod 777 public/uploads
chmod 777 public/assets/js/addons.js
chmod 777 application/extra/addons.php

安装后修复以下目录和文件权限

chmod 644 application/database.php
chmod 644 application/config.php
chmod 755 public
chmod 755 application/admin/command/Install

Dockerfile文件样例

ARG PHP_VERSION
# FROM php:${PHP_VERSION}-cli
FROM php:${PHP_VERSION}-fpm

# ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
# 手动下载install-php-extensions下Dockerfile目录
COPY --chmod=0755 install-php-extensions /usr/local/bin/

# 镜像源
RUN if [ -f "/etc/apt/sources.list.d/debian.sources" ]; then \
    sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list.d/debian.sources && \
    sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list.d/debian.sources; \
else \
    sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list && \
    sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/' /etc/apt/sources.list; \
fi

RUN install-php-extensions zip gd bcmath intl opcache pdo_mysql redis

WORKDIR /var/www

CMD ["php-fpm"]

EXPOSE 9000

支持的扩展可以通过 https://github.com/mlocati/docker-php-extension-installer 查看

多php版本支持, 在.bashrc创建别名

alias composer74='/usr/bin/php7.4 /usr/local/bin/composer'
alias composer82='/usr/bin/php8.2 /usr/local/bin/composer'