VPS

PHP 8のインストール・設定方法

PHPと関連モジュールのインストール

dnfの部分は、CentOS7以前ならyum、Ubuntu系ならapt-getを使って下さい

Linux系でのOS付属のPHPのインストール

OSのディストリビューション付属の版になるので、最新ではない可能性はあります。
但し、OSディストリビューション側が責任を持って、アップデートを他のソフトと合わせて稼働する様に管理してくれます。

sudo dnf -y install php;
sudo dnf -y install php-bcmath php-cli php-curl php-devel php-fpm php-gd php-json php-ldap php-mbstring php-mysqlnd php-xml php-odbc php-opcache php-pdo php-pear php-pgsql php-soap php-xml php-xmlrpc php-zip;

Linux系でのPHP公式配布のPHPインストール

公式が配布するもの=最新版なので、一般的にOSディストリビューション付属のPHPよりも新しい版が提供されます。
自分は最新版を機能・性能面で使いたいので、こちらの方法でインストールしています。

デメリットとしては、OSディストリビューション付属を使ってのインストールだったら

dnf -y update

とOSアップデートをかけると、PHPにもアップデートがあったら一緒にアップデートされますが、PHP公式から直接アップデートすると、以後のPHP公式のアップデートを自分でフォローし、必要性を判断して更新していく必要性が出てきます。
そうした、運用面のデメリットも考慮した上で、どちらが良いか考えてやりましょう。

# CentO8の場合。OS・バージョンによって異なるので、詳しくはhttp://rpms.remirepo.net/enterprise/を見て自分の環境に該当するものを見つけて下さい #
# インストール対象は2020/11現在最新のPHP8.0の場合 #
OSVER=8;
PHPVER=80;
sudo dnf -y install http://rpms.remirepo.net/enterprise/remi-release-$OSVER.rpm;
sudo dnf -y install epel-release yum-utils;
sudo dnf config-manager --set-enabled PowerTools;
sudo dnf -y install php$PHPVER*;
sudo yum -y install php$PHPVER-php-bcmath php$PHPVER-php-cli php$PHPVER-php-curl php$PHPVER-php-devel php$PHPVER-php-fpm php$PHPVER-php-gd php$PHPVER-php-json php$PHPVER-php-ldap php$PHPVER-php-mbstring php$PHPVER-php-mysqlnd php$PHPVER-php-xml php$PHPVER-php-odbc php$PHPVER-php-opcache php$PHPVER-php-pdo php$PHPVER-php-pear php$PHPVER-php-pgsql php$PHPVER-php-soap php$PHPVER-php-xml php$PHPVER-php-xmlrpc php$PHPVER-php-zip;

sudo update-alternatives \
--install /usr/bin/php                       php     /opt/remi/php$PHPVER/root/usr/bin/php   0    \
--slave   /usr/bin/php-cgi                   php-cgi /opt/remi/php$PHPVER/root/usr/bin/php-cgi   \
--slave   /usr/bin/pear                      pear    /opt/remi/php$PHPVER/root/usr/bin/pear      \
--slave   /usr/bin/phar.phar                 phar    /opt/remi/php$PHPVER/root/usr/bin/phar.phar;

なお上記の方法でupdate-alternativesを複数のバージョンに対してやっている場合

sudo alternatives --config php;

で、PHPの複数のバージョンの切り替えを行う事が出来る。

There are 2 programs which provide 'php'.

  Selection    Command
-----------------------------------------------
*+ 1           /opt/remi/php74/root/usr/bin/php
   2           /opt/remi/php80/root/usr/bin/php

といったものが表示されるので、自分が使いたいバージョンの番号を打つ。
自分の場合はPHP8.0を使いたかったので、2と打つ。

php -v;

と打って、PHPのバージョンを確認

PHP 8.0.0 (cli) (built: Nov 24 2020 17:04:03) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.0, Copyright (c), by Zend Technologies

それで自分がインストールしたいPHPの版が正常にインストールされている事を確認する。


composerのインストール

sudo dnf -y install composer;

もしもcomposerがOS側からパッケージとして提供されてなければ
https://getcomposer.org/download/
手順にそってインストール

実行したディレクトリにcomposer.pharがダウンロードされている状態になるので

mv composer.phar /usr/local/bin/;

という形で動かして、どのディレクトリからでも実行できるようにする

PHP-FPMのインストール・設定

インストール

PHPVER=80;
dnf install -y php$PHPVER-php-fpm;
systemctl enable php$PHPVER-php-fpm;
systemctl start php$PHPVER-php-fpm;

configファイルの設定

/etc/opt/remi/php$PHPVER/php-fpm.d/www.conf
を編集する

TCPポートでの接続を可能にするには

#listen = /var/opt/remi/php$PHPVER/run/php-fpm/www.sock
listen = 127.0.0.1:9000

と書き換え

また、Apacheではなく、nginxと連携させて動かす場合には

#group = apache
group = nginx

#user = apache
user = nginx

と書き換え

php-fpmでtmpフォルダのmkdir絡みでエラー(失敗)する場合

/lib/systemd/system/php$PHPVER-php-fpm.service

PrivateTmpの値をfalseにして

systemctl daemon-reload;
systemctl restart php$VER-php-fpm;

で反映

おまけ: MacでのPHPのインストール

homebrew
https://brew.sh/
をインストールしてあれば

brew install php;

と打つだけでインストール可能。

但し、homebrew経由のインストールではPHP7がデフォルトの現状で、PHP8系をそれでも使いたければ

brew update&&brew tap shivammathur/php&&brew install shivammathur/php/php@8.0&&brew link --overwrite --force php@8.0

と打つと
/usr/local/bin/php
がPHP8になる