Ubuntu 20.04 にて、 phpbrew で PHP8.0 / PHP8.1 をインストールします!
私は普段 Macで作業しておりまして、
案件によって使用する PHP のバージョンが異なるため
phpbrew で バージョン管理 しています。
そしてコレがとても便利なんです!(って前にも書いたかもしれない笑)
以前は Mac + Homebrew 環境に phpbrew を使ってPHP 7系 / 8系 をインストールしたのですが、
今回は Ubuntu に phpbrew で PHP8.0 / 8.1 とその他おまけをインストールして
PHP開発環境を整えようと思います😄
こちらもどうぞっ!


Ubuntu に PHP をインストールしてPHP開発環境を整える(結論)
上から順に実行していきます。
phpbrew をインストール
# 現在ログイン中のユーザーのホームディレクトリへ移動!
cd
# パッケージリストとパッケージの更新
sudo apt update -y
sudo apt upgrade -y
# PHPビルドに必要なパッケージをインストール
sudo apt install -y curl wget
sudo apt install -y build-essential libreadline-dev libsqlite3-dev libcurl4-gnutls-dev libzip-dev libssl-dev libxslt-dev pkg-config php php-cli php-dev
sudo apt install -y bison re2c autoconf pkg-config
sudo apt install -y libonig-dev libxml2-dev bzip2 libbz2-dev
# 👇は拡張機能 gd を有効にするためインストールなのでオプションです
sudo apt install -y libpng-dev libjpeg-dev libwebp-dev
# phpbrew のインストール
curl -L -O https://github.com/phpbrew/phpbrew/releases/latest/download/phpbrew.phar
sudo mv phpbrew.phar /usr/local/bin/phpbrew
sudo chmod 755 /usr/local/bin/phpbrew
# .bashrc / .zshrc の末尾に追加
echo 'export PHPBREW_SET_PROMPT=1' >> .bashrc
echo 'export PHPBREW_RC_ENABLE=1' >> .bashrc
echo 'export EDITOR=vim' >> .bashrc # 👈🏻ここはお好みで
echo '[[ -e ~/.phpbrew/bashrc ]] && source ~/.phpbrew/bashrc' >> .bashrc
# phpbrew初期化
phpbrew init
source ~/.phpbrew/bashrc
# -*- ここでターミナルを再起動 -*-
phpbrew initすると、ホームディレクトリに
PHPをビルド/インストールするためのディレクトリである.phpbrewが作成されます。
ls -lhaで確認してみてください!
PHP 8.0 / 8.1 をインストール
2021/12/23時点での最新のPHPをインストールしていきます!
# インストールできるPHPリストを更新
phpbrew update
# PHP8.0の場合
phpbrew install php-8.0.14 +default +mysql +fpm +openssl +curl
# PHP8.1の場合
phpbrew install php-8.1.1 +default +mysql +fpm +openssl +curl
# インストールしてから終わるまで結構長いかもしれません😩
# 任意のバージョンに切り替え
phpbrew switch php-8.0.14
phpbrew switch php-8.1.1
# -*- ここでもターミナルを再起動 -*-
インストール後にphp -vと実行してみて、任意のバージョンになっているか確認してみてください!
設定ファイルを調整
php.iniとphp-fpm.confを修正する場合は以下のようにします。
# 現在のバージョンのphp.iniを修正する場合
phpbrew config
# 現在のバージョンのphp-fpm.confを修正する場合
phpbrew fpm config
# 修正したら再起動
phpbrew fpm restart
PHP開発環境を整える(オプション)
PHPで開発するときは、PHP以外に他のツールもインストールしますよね。
それらのいくつかも紹介させてください!
UbuntuだけでなくMacでも可能です!
(Macの場合はライブラリの追加インストールが必要になるかもしれません)
PHP 拡張機能をインストール(オプション)
適当な拡張機能をインストールしてみます。
ここはお好みでお願いします!
# 画像データを扱うための拡張モジュール
phpbrew -d ext install gd -- --with-jpeg --with-webp --with-png
# FTP使いつつ複雑なことしたい方向けの拡張モジュール
phpbrew -d ext install ftp
# PHPのパフォーマンスを向上させる拡張モジュール
phpbrew -d ext install opcache
# 拡張機能リストを表示
phpbrew ext
インストールした拡張機能の先頭に[*]がついてたら有効になっています!
opcacheについて
opcacheをインストールすると「php -v」したときの結果が変わります。
👇インストール前
PHP 8.0.14 (cli) (built: Dec 23 2021 23:20:47) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.14, Copyright (c) Zend Technologies
👇インストール後
PHP 8.0.14 (cli) (built: Dec 23 2021 23:20:47) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.14, Copyright (c) Zend Technologies
with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies
Macの場合はPHPをインストールするときに、ビルドオプションを以下のようにしないと失敗するかもしれません。
# pcre2をインストール
brew install pcre2
# ビルドオプションの最後にpcre2を追加してインストール
phpbrew install php-8.0.14 +default +mysql +fpm +openssl +curl -- --with-external-pcre=$(brew --prefix pcre2)
# opcache有効化
phpbrew ext install opcache
xdebug のインストール
Xdebugなんかは、重宝している方が多いのではないでしょうか?
拡張機能リストにないですが、Linux,Macだったら以下のようにしてインストールできます。
phpbrew ext install xdebug
php -v
# PHP 8.0.14 (cli) (built: Dec 23 2021 23:20:47) ( NTS )
# Copyright (c) The PHP Group
# Zend Engine v4.0.14, Copyright (c) Zend Technologies
# with Zend OPcache v8.0.14, Copyright (c), by Zend Technologies
# with Xdebug v3.1.2, Copyright (c) 2002-2021, by Derick Rethans
# 👆Xdebugの行が増えていますね!
Windowsでは試してません💦
その他の拡張機能のインストール
phpbrew extで出力される拡張機能リストで表示されないものは
以下のようにしてバージョンを確認したり、それを指定してインストールすることができます。
# 拡張機能のバージョン一覧
phpbrew ext known 拡張機能名
# 最新版をインストールする(例えばRedisの場合)
phpbrew ext install redis latest
Composer をインストール(オプション)
PHPで開発するときは、おそらくComposerもインストールすると思うのでやっておきます!
(公式の通りなんですが、、、)
# 任意のPHPバージョンになっているか確認してくださいね👍🏼
php -v
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '906a84df04cea2aa72f40b5f787e49f22d4c2f19492ac310e8cba5b96ac8b64115ac402c8cd292b8a03482574915d1a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
php -r "unlink('composer-setup.php');"
sudo chmod 777 /usr/local/bin/composer
# 最新バージョンになっているか確認!
composer -V
これでLaravelのプロジェクトもばっちりです!
Node.js / NPM / YARN も導入してしまう(オプション)
PHPで開発するときnpmとかyarn使ったりするんじゃないですか?
ということで導入します!
Node.jsとかnpmとかyarnなどのJavascriptツールはVoltaでバージョン管理すると結構幸せになれます。
Volta公式HP
# ホームディレクトリへ移動
cd
# Voltaインストール
# これだけでPATHも通してくれます!
curl https://get.volta.sh | bash
# バージョンを指定してNodeをインストールし、デフォルトに設定
volta install node@16.13.1
# NodeのLTSバージョンをインストールしてデフォルトバージョンに設定
volta install node
# nodeのデフォルトバージョンに基づいた最新バージョンをインストールしてデフォルトに設定
volta install npm
volta install yarn
# インストールしたパッケージ管理ツールを表示
volta list all
# ⚡️ User toolchain:
#
# Node runtimes:
# v16.13.1
# v17.2.0 (default)
#
# Package managers:
# npm:
# v8.2.0 (default)
# Yarn:
# v1.22.17 (default)
# プロジェクトごとにバージョンを固定する
cd path/to/project-root
volta pin node@16.13.1
volta pin npm@インストール済のバージョン
volta pin node@◯◯◯とすると
以下のようにpackage.jsonにvoltaの設定が書き込まれます。
"volta": {
"node": "16.13.1",
"npm": "7.24.2"
}
これでNodeやnpmのJavascriptツールのバージョン管理もばっちりですね!
Apache インストール(オプション)
PHPで開発するときWebサーバー使いますy(以下略)
sudo apt install apache2
# 設定の確認
sudo ufw status
# ファイアフォール設定の一覧表示
sudo ufw app list
# 適宜ポートを開きます(この場合はポート80と443を開きます)
sudo ufw allow "Apache Full"
ファイアフォールが有効になっている場合は、適宜ポートを開放します。
# 設定の確認
sudo ufw status
# ファイアフォール設定の一覧表示
sudo ufw app list
# 適宜ポートを開きます(この場合はポート80と443を開きます)
sudo ufw allow "Apache Full"
あとは、ご自身の環境にあわせて設定ファイルを調整してApacheを再起動します。
# 例えば、以下2つをお好みに書き換え
sudo vim /etc/apache2/apache2.conf
sudo vim /etc/apache2/sites-enabled/000-default.conf
これでWebサーバーも準備できました!
Nginx インストール(オプション)
PHPで開発するときWebサーバー使いますy(以下略)
Nginxの場合はこちらです。
sudo apt install nginx
こちらもApacheと同様に
ファイアフォールが有効になっている場合は、適宜ポートを開放します。
# 設定の確認
sudo ufw status
# ファイアフォール設定の一覧表示
sudo ufw app list
# 適宜ポートを開きます(この場合はポート80と443を開きます)
sudo ufw allow "Nginx Full"
Nginxは、インストールしたままの設定だとポート80を見るようになっています。
実行ユーザーのnginxやwww-dataはsudoできないので
権限エラーで起動に失敗している場合があります。(ポートが使用されていたりとか)
ですので、デフォルトで80になっているところを8000などに変えて再起動しておきます。
# 設定ファイルを開く
sudo vim /etc/nginx/nginx.conf
# 👇こっちに書かれている場合もあります
sudo vim /etc/nginx/sites-enabled/default
以下のように書き換えます。
(必要に応じてその他の項目もお好みに書き換えるなりします。)
# ... 略
server {
#listen 80 default_server; <--- コメントアウト
listen 8000 default_server; # <- 8000に変更
#listen [::]:80 default_server; <--- コメントアウト
listen [::]:8000 default_server; # <- 8000に変更
# ... 略
}
Nginxを再起動して確認します。
sudo service nginx restart
sudo service nginx status
# acrive になっていたらOK
これでWebサーバーもばっちりですね!
おわりに
開発環境の構築はパターン化しちゃうので、パパッと済ましちゃいたいですね!
お読みいただきありがとうございました!
古いバージョンはこちらにてインストールしてます!

