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
これでどうでしょうか、うまくいくと思います。