Debian 9 的源 php 版本还是 php7.0

$ sudo dpkg --get-selections |grep php
php-cli                     install
php-common                  install
php-zip                     install
php7.0-cli                  install
php7.0-common                   install
php7.0-json                 install
php7.0-opcache                  install
php7.0-readline                 install
php7.0-zip                  install

因为我要在 N1 这台机器上构建 arm64 架构的兰空图床 docker image,所以需要安装 php8,现决定安装 php8.1

卸载 php7.0

$ sudo apt remove php7.0-*

一、安装 php8.1 以及扩展

因为官方源没有 php8.1,所以需要定制添加一个源。于是参考了这篇 文章

  1. 安装基础软件包

    $ sudo apt update && sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
  2. 添加 sury 的软件源

    $ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list
  3. 导入仓库的 key

    $ wget -qO - https://packages.sury.org/php/apt.gpg | sudo apt-key add -

    我在 N1 上执行这一步时遇到错误 gpg: no valid OpenPGP data found. 但是 amd64 的 debian11 上就正常.

    在执行 sudo apt update 遇到错误 GPG error: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY xxxxIgn:7 https://packages.sury.org/php stretch InRelease

    这和我之前遇到的问题一样,读者可以参考 此文

    解决这个问题

    $ gpg --keyserver keyserver.ubuntu.com --recv B188E2B695BD4743 && gpg --export --armor B188E2B695BD4743 | sudo apt-key add -
  4. 更新索引

    导入成功后再次更新索引

    $ sudo apt update
  5. 安装 php8.1 以及一些扩展

    $ sudo apt install -y php8.1 php-cli php-common php-zip php8.1-curl php8.1-xml
  6. 查看 php 版本

    成功安装后查看 php 版本

    $ php -v
    PHP 8.1.5 (cli) (built: Apr 22 2022 04:53:50) (NTS)
    Copyright (c) The PHP Group
    Zend Engine v4.1.5, Copyright (c) Zend Technologies
        with Zend OPcache v8.1.5, Copyright (c), by Zend Technologies

二、安装 composer

主要参考 文章

  1. 安装基础依赖

    $ sudo apt install curl php8.1-cli php8.1-mbstring git unzip

    php-cli php-mbstring
    php-cli 是 command-line interpreter for the PHP scripting language (default),安装了 8.1 的之后可以不用安装。

    mbstring 扩展也是 MBSTRING module for PHP [default],不用安装。

  2. 下载并安装 composer

    $ curl -sS https://getcomposer.org/installer -o composer-setup.php
    
    # 通过 sha384 获取这个文件的摘要信息
    $ sha384sum composer-setup.php
    
    # 如下输出
    55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae  composer-setup.php
    
    # 定义临时的 HASH 变量
    $ HASH=55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae
    
    # 校验安装器是否合法
    $ php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
    
    # 如果输出 Installer verified 说明下载的文件完整性 ok
    
    # 全局安装 composer,安装后程序位于 /usr/local/bin/composer
    $ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
    
    # 输出可能如下
    All settings correct for using Composer
    Downloading...
    
    Composer (version 2.3.5) successfully installed to: /usr/local/bin/composer
    Use it: php /usr/local/bin/composer

执行 composer 输出

dk@n1-debian:/etc/php$ composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.3.5 2022-04-13 16:43:00

至此 php8.1 和 composer 已安装完成。下一篇文章将构建兰空图床的 arm64 docker 镜像,因为我找遍了全网发现没人构建 arm64 的镜像,只有几个 amd64 的镜像可用。