AlmaLinux9へPHP(8.4)をインストールしよう
AlmaLinux 9で"dnf install php"を実行すると、PHP 8.0がインストールされます。ここでは、現時点での最新リリースであるPHP 8.4を導入しようと思います。
まずは標準でインストール可能なPHPバージョンを確認、PHP8.1/8.2とわかります。
$ sudo dnf module list php
Last metadata expiration check: 3:10:57 ago on Wed 02 Apr 2025 07:55:06 PM JST.
AlmaLinux 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
ではPHPの各バージョンのサポート期間を確認してみると、PHP8.4が最新だとわかります。必ずしも最新を使う必要はないのですが、PHPでの開発を行っているわけでもないのでここは最新をインストールします。
PHP: Supported Versions
https://www.php.net/supported-versions.php
インストール手順は最初にremiリポジトリをインストールし有効化します。次に利用可能なバージョンを確認後、そのバージョン(8.4)をenableしてインストールします。
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
(中略)
Installed:
emi-release-9.5-2.el9.remi.noarch$ sudo dnf config-manager --set-enabled remi
$ sudo dnf module list php
Remi's RPM repository for Enterprise Linux 9 - x 557 kB/s | 2.2 MB 00:03
Remi's Modular repository for Enterprise Linux 9 285 kB/s | 800 kB 00:02
Safe Remi's RPM repository for Enterprise Linux 391 kB/s | 1.2 MB 00:03
Last metadata expiration check: 0:00:01 ago on Wed 02 Apr 2025 11:25:26 PM JST.
AlmaLinux 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
php remi-8.4 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled$ sudo dnf module enable php:remi-8.4Dependencies resolved.
=================================================================================
Package Architecture Version Repository Size
=================================================================================
Enabling module streams:
php remi-8.4Transaction Summary
=================================================================================
$ sudo dnf install php
Last metadata expiration check: 0:05:14 ago on Wed 02 Apr 2025 11:25:26 PM JST.
Dependencies resolved.
=================================================================================
Package Arch Version Repository Size
=================================================================================
Installing:
php x86_64 8.4.5-1.el9.remi remi-modular 1.9 M
Installing dependencies:
capstone x86_64 4.0.2-10.el9 appstream 766 k
libsodium x86_64 1.0.18-8.el9 epel 161 k
libxslt x86_64 1.1.34-9.el9_5.1 appstream 239 k
oniguruma5php x86_64 6.9.10-1.el9.remi remi 222 k
php-common x86_64 8.4.5-1.el9.remi remi-modular 752 k
Installing weak dependencies:
nginx-filesystem noarch 2:1.20.1-20.el9.alma.1 appstream 8.3 k
php-cli x86_64 8.4.5-1.el9.remi remi-modular 3.9 M
php-fpm x86_64 8.4.5-1.el9.remi remi-modular 2.0 M
php-mbstring x86_64 8.4.5-1.el9.remi remi-modular 536 k
php-opcache x86_64 8.4.5-1.el9.remi remi-modular 492 k
php-pdo x86_64 8.4.5-1.el9.remi remi-modular 97 k
php-sodium x86_64 8.4.5-1.el9.remi remi-modular 43 k
php-xml x86_64 8.4.5-1.el9.remi remi-modular 957 k
Transaction Summary
=================================================================================
Install 14 Packages
(中略)
Installed:
capstone-4.0.2-10.el9.x86_64
libsodium-1.0.18-8.el9.x86_64
libxslt-1.1.34-9.el9_5.1.x86_64
nginx-filesystem-2:1.20.1-20.el9.alma.1.noarch
oniguruma5php-6.9.10-1.el9.remi.x86_64
php-8.4.5-1.el9.remi.x86_64
php-cli-8.4.5-1.el9.remi.x86_64
php-common-8.4.5-1.el9.remi.x86_64
php-fpm-8.4.5-1.el9.remi.x86_64
php-mbstring-8.4.5-1.el9.remi.x86_64
php-opcache-8.4.5-1.el9.remi.x86_64
php-pdo-8.4.5-1.el9.remi.x86_64
php-sodium-8.4.5-1.el9.remi.x86_64
php-xml-8.4.5-1.el9.remi.x86_64
PHPのバージョンを確認します。 8.4.5(2025年3月時点)がインストールされました。PHPを実行する上で必要となる他のモジュールは、MariaDBのGUI管理ツール phpMyAdminをインストールするとWebアプリの大半をカバーすると思います。
PHP 7で廃止されたmysql-*****命令(mysqli-*****へ移行)を必要とする場合は、php-pecl-mysqlのインストールでカバーされます。
$ php -v
PHP 8.4.5 (cli) (built: Mar 12 2025 01:55:56) (NTS gcc x86_64)
Copyright (c) The PHP Group
Built by Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine
Zend Engine v4.4.5, Copyright (c) Zend Technologies
with Zend OPcache v8.4.5, Copyright (c), by Zend Technologies
PHP 8.4のインストールで、設定ファイル "/etc/httpd/conf.d/php.conf" が追加されたので、Apacheを再起動します。
$ sudo systemctl enable --now php-fpm
$ sudo systemctl restart httpd
(PHPの構成変更があれば)
$ sudo systemctl restart php-fpm
PHPの動作確認代わりに、"phpinfo();"を表示します。Webサーバーのドキュメントルートに次のファイル"phpinfo.php"を作成して動作を確認します。
phpinfo.php
<?php phpinfo(); ?>
Webブラウザから、http://${SERVER_NAME}/phpinfo.php を表示し、次を表示すれば正常です。
"/etc/php.ini"が設定ファイルなので、タイムゾーンを変更します。またレスポンスヘッダーにPHPバージョンを表示しないようにします。
$ sudo cp -p /etc/php.ini /etc/php.ini.org
$ sudo vim /etc/php.ini
(中略)
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; https://php.net/expose-php
; expose_php = On
expose_php = Off
(中略)
[Date]
; Defines the default timezone used by the date functions
; https://php.net/date.timezone
;date.timezone =
date.timezone = Asia/Tokyo
/etc/php.iniなどの設定情報やphpモジュールのインストール等で構成変更したときは、php-fpmを再起動します。
FastCGI Process Manager (FPM)
https://www.php.net/manual/ja/install.fpm.php
$ sudo systemctl restart php-fpm
他にアップロードファイルの制限を緩くするために(大きい画像ファイルなどに対応)、upload_max_filesizeやpost_max_sizeなどを大きくするようですが、サーバー容量にも響くのでほどほどにしておきます。
変更後はApacheを再起動します。
その他
.htaccess内にphp_valueを使用するとエラーが起きるので、.user.iniへ移行。
PHP-FPM 環境で .htaccess に php_value を使用したら 500 Internal Server Error
https://labor.ewigleere.net/2021/11/24/php-fpm-php_value-error/
PHP-FPM環境で、PHPのエラーが発生した時は、"/var/log/php-fpm/www-error.log"へ出力される。出力先は"/etc/php-fpm.d/www.conf"で変更可能だが、ログローテート"/etc/logrotate.d/php-fpm"も変更要。
VPSのメモリが1GBと少なめなため、pm.max_spare_servers を少し調整しました。spareとCPUのコア数を同じに、という考えの方もいるようですが、2コアではね..
/etc/php-fpm.d/www.conf
;pm.max_spare_servers = 35
pm.max_spare_servers = 5
- AlmaLinux9をさくらのVPSでインストールしよう
- AlmaLinux9を初期セットアップしよう
- AlmaLinux9へWebサーバー(Apache)をインストールしよう
- AlmaLinux9へPHP(8.4)をインストールしよう
- AlmaLinux9へTLS証明書(Let's Encrypt)を導入しよう
- ALmaLinux9へMariaDBをインストールしよう(10.5 => 10.11)
- AlmaLinux9へメールサーバー(Postfix/Dovecot)をインストールしよう
- AlmaLinux9へDKIM、DMARCを設定しよう
フォローしませんか?
コメント