【Ubuntu】phpbrewでPHP 8.0/8.1をインストールしてPHP開発環境を整える

目次

Ubuntu 20.04にて、phpbrewでPHP8.0/PHP8.1をインストールします。
​​
私は普段 Macで作業しておりまして、案件によって使用するPHPのバージョンが異なるためphpbrewでバージョン管理しています。

以前はMac + Homebrew環境にphpbrewを使ってPHP7系/8系をインストールしたのですが、
今回はUbuntuにphpbrewでPHP8.0/8.1とその他おまけをインストールして
PHP開発環境を整えようと思います。​

phpbrewでPHP 8.1をインストール phpbrewでPHP 7.1/8.0をインストールした(+openssl, +gd)

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で確認してみてください。

PHP8.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で開発するとき、必要に応じて他のツールもインストールしますよね。いくつかインストールしてみます。
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

​(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サーバー使いますよね?

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サーバー使いますよね?
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サーバーもばっちりですね!

おわりに

​開発環境構築はパターン化しちゃうので、パパッと済ましちゃいたいですね。
​お読みいただきありがとうございました。

あわせてどうぞ。

phpbrewでPHP 8.1をインストール phpbrewでPHP 7.1/8.0をインストールした(+openssl, +gd)