サイトアイコン アイネクシオ(Webサイトドクター)

Ubuntu18.04 LTS に PHP8.3をインストール

Ubuntu18.04 LTS の環境で、PHP8.3の環境が必要になったので準備します。
パッケージがPPAにまだ含まれていないので(2024.04.19 時点)、ソースからビルドします。

ツールとライブラリをインストール

sudo apt install build-essential libxml2-dev libsqlite3-dev

PHPソースをダウンロードして展開

wget https://www.php.net/distributions/php-8.3.0.tar.bz2
tar -xvjf php-8.3.0.tar.bz2
cd php-8.3.0

オプション指定でコンフィグレーション

./configure --enable-fpm --with-mysqli --with-pdo-mysql --with-sqlite3

ビルドとインストール

make
sudo make install

Apacheの設定

sudo vi /etc/apache2/sites-available/000-default.conf

<FilesMatch \.php$>
    SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/"
</FilesMatch>

PHP-FPMのサービスファイル作成

sudo vi /etc/systemd/system/php8.3-fpm.service

[Unit]
Description=The PHP 8.3 FastCGI Process Manager
After=network.target

[Service]
Type=simple
PIDFile=/run/php8.3-fpm.pid
ExecStart=/usr/local/sbin/php-fpm --nodaemonize --fpm-config /usr/local/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

PHP-FPMの設定ファイルの作成

sudo vi /usr/local/etc/php-fpm.conf

[global]
pid = /run/php8.3-fpm.pid
error_log = /var/log/php8.3-fpm.log
include=/usr/local/etc/php-fpm.d/*.conf

PHP-FPMのプール設定

sudo vi /usr/local/etc/php-fpm.d/www.conf

[www]
user = www-data
group = www-data
listen = /run/php/php8.3-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

PHP-FPM、Apacheの再起動

sudo systemctl daemon-reload
sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm
sudo systemctl restart apache2

ここまでだとサーバーを再起動した場合、/run/php が失われてしまうため、以下の設定を追加します。

サービスファイル作成

sudo vi /etc/systemd/system/php-fpm-prestart.service

[Unit]
Description=Create /run/php directory for PHP-FPM
Before=php8.3-fpm.service

[Service]
Type=oneshot
ExecStart=/bin/mkdir -p /run/php
ExecStart=/bin/chown www-data:www-data /run/php
ExecStart=/bin/chmod 755 /run/php
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

サービスの有効化

sudo systemctl enable php-fpm-prestart.service
sudo systemctl start php-fpm-prestart.service
sudo systemctl daemon-reload
sudo systemctl restart php8.3-fpm

これでどうでしょうか、うまくいくと思います。

モバイルバージョンを終了