ラズパイにPHP8.2を導入した

# PHP8.2は簡単には入れられない
標準リポジトリを探してもPHP8.2は見つからない。
なんなら8.1もない。8.0はあるけど面白くない。
```
# apt search php8.2
ソート中... 完了
全文検索... 完了  
```

# 前提パッケージを導入
PHPをインストールするためには色々と前提パッケージを入れる必要がある。

## build-essential
gccやmakeなど、開発に必要なビルドツールをまとめてインストールできる。
もしかしたら最初から入ってるかもしれない。
```
# apt -y install build-essential
```

## apt-transport-https
aptでhttp通信ができるようにするパッケージ。デフォルトだとhttp通信ができないようである。最新のaptだと対応しているらしいので要らないかもしれないらしい。
```
# apt -y install apt-transport-https
```

## ca-certificates
https通信するためのCA証明書。これがないとhttps通信に失敗するらしい。
これも最初から入ってるかも。
```
# apt -y install ca-certificates
```

# リポジトリ追加(失敗)
PPA(非公式なリポジトリ)であるオンドレイ氏のリポジトリを追加して、インストールする方法。
ですが、失敗したので飛ばしても良いです。Ubuntuならこれでいけるっぽいです。
## software-properties-common
後述する`add-apt-repository`を使えるようにする。
```
# apt install -y software-properties-common
```
## リポジトリ追加
:::note info
非公式なものを使うときは、ご自身の責任のもと使うようにしましょう。
私は、ネットで調べて有名そうなものを使うようにしています。
:::
オンドレイ氏のリポジトリを追加しようとしたが、エラー！
```
# add-apt-repository ppa:ondrej/php
Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 95, in <module>
    sp = SoftwareProperties(options=options)
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 109, in __init__
    self.reload_sourceslist()
  File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 599, in reload_sourceslist
    self.distro.get_sources(self.sourceslist)    
  File "/usr/lib/python3/dist-packages/aptsources/distro.py", line 91, in get_sources
    raise NoDistroTemplateException(
aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for Raspbian/bullseye
```

調べてみたところ、これはUbuntu用のPPAのようで、RaspbianOSに対応したものではないらしい。
※ただし、無理やり使えるようにする方法もあるみたい。
https://qiita.com/hnw/items/734f82bee26a40269c1b

OSのバージョンは以下のコマンドで調べることができる。
`lsb_release`は最初から入ってそうだが、なければ`apt -y install lsb-release`でインストールする。
```
# lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye
```

# リポジトリ追加(成功)
suryPPAリポジトリを使う方法。
## GPGキーをダウンロード
wgetコマンドで、GPGキーをダウンロードします。
GPGキーの詳細は割愛しますが、これで認証することで、suryリポジトリをパッケージリストに追加できるようになります。
wgetが使えない場合は、`apt install -y wget`でインストールします。
```
# wget -qO /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
```
## パッケージリストを追加
echoコマンドで追加。
```
# echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
```
## パッケージリストを更新する
```
# apt update
```
## パッケージ確認
php8.2関連のパッケージが追加されたことを確認できた。
```
# apt search php8.2
ソート中... 完了
全文検索... 完了  
libapache2-mod-php8.2/bullseye 8.2.0-1+0~20221208.9+debian11~1.gbp03fa1d armhf
  server-side, HTML-embedded scripting language (Apache 2 module)

libapache2-mod-php8.2-dbgsym/bullseye 8.2.0-1+0~20221208.9+debian11~1.gbp03fa1d armhf
  debug symbols for libapache2-mod-php8.2

libphp8.2-embed/bullseye 8.2.0-1+0~20221208.9+debian11~1.gbp03fa1d armhf
  HTML-embedded scripting language (Embedded SAPI library)

〜〜〜省略〜〜〜
```

# PHP関連パッケージをインストール
## PHP本体
```
# apt install -y php8.2
```
phpをインストールすると標準でphp-cliなど、いくつかのパッケージがインストールされる。
`dpkg -l`コマンドでインストールされているパッケージを確認できる。RedHat系OSでいうところのrpmコマンドのようなもの。
```
# dpkg -l | grep php
ii  libapache2-mod-php8.2                  8.2.0-1+0~20221208.9+debian11~1.gbp03fa1d  armhf        server-side, HTML-embedded scripting language (Apache 2 module)
ii  php-common                             2:93+0~20221211.45+debian11~1.gbpdb4dcc    all          Common files for PHP packages
ii  php8.2                                 8.2.0-1+0~20221208.9+debian11~1.gbp03fa1d  all          server-side, HTML-embedded scripting language (metapackage)
ii  php8.2-cli                             8.2.0-1+0~20221208.9+debian11~1.gbp03fa1d  armhf        command-line interpreter for the PHP scripting language
ii  php8.2-common                          8.2.0-1+0~20221208.9+debian11~1.gbp03fa1d  armhf        documentation, examples and common module for PHP
ii  php8.2-opcache                         8.2.0-1+0~20221208.9+debian11~1.gbp03fa1d  armhf        Zend OpCache module for PHP
ii  php8.2-readline                        8.2.0-1+0~20221208.9+debian11~1.gbp03fa1d  armhf        readline module for PHP
```
その他に必要なパッケージがあれば別途インストールが必要。
## php-mysql
PHPでMySQLやMariaDBを取り扱うためのパッケージ。
```
# apt install -y php8.2-mysql
```
# おわり
とりあえずここまで。