PHP8.0のインストール【AlmaLinux】

PHP8.0のインストールを行います。

1. PHPのインストール

インストールできるPHPのバージョンを確認します。
# dnf module list php
AlmaLinux 8 - AppStream
Name         Stream           Profiles                           Summary
php          7.2 [d]          common [d], devel, minimal         PHP scripting language
php          7.3              common [d], devel, minimal         PHP scripting language
php          7.4              common [d], devel, minimal         PHP scripting language
php          8.0              common [d], devel, minimal         PHP scripting language
 
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name         Stream           Profiles                           Summary
php          remi-7.2         common [d], devel, minimal         PHP scripting language
php          remi-7.3         common [d], devel, minimal         PHP scripting language
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

Remiリポジトリから PHP 8.0 がインストールされるように php:remi-8.0 モジュールをインストールします。
# dnf module reset php
# dnf module install php:remi-8.0


dnfでインストールを行います。
# dnf install  php
# dnf install  php-devel

2. 関連モジュールのインストール

(1) libmcryptのインストール
# dnf install --enablerepo=epel libmcrypt

(2) libargon2のインストール
php-pdoをインストールする場合に必要です。
# dnf install --enablerepo=epel libargon2
# dnf install --enablerepo=epel libargon2-devel

(3) libraqmのインストール
# dnf --enablerepo=epel install libraqm

3. phpのモジュールのインストール

これは任意ですが、必要なモジュールをインストールします。
# dnf install php-mysqlnd
# dnf install php-mbstring
# dnf install php-gd
# dnf install php-pecl-xmlrpc
# dnf install php-pecl-mcrypt
# dnf install php-fpm
# dnf install php-opcache
# dnf install php-pecl-apcu
# dnf install php-pecl-zip
# dnf install php-soap
# dnf install php-pear

4. /etc/php.iniの編集

(1) php.iniの編集
# cp /etc/php.ini{,.default}
# vi /etc/php.ini

expose_php = Off
max_execution_time = 60
memory_limit = 512M
※サーバの搭載メモリにより調整して下さい。

error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
; Log errors to specified file. PHP's default behavior is to leave this value
; empty.
; http://php.net/error-log
; Example:
;error_log = php_errors.log
; Log errors to syslog.
;error_log = syslog
※php-fpmを利用している場合には、エラーログは「/var/log/php-fpm/www-error.log」に書き込まれます。(当初はこのファイルは存在しません。エラーが発生すると自動的に作成されます。)
「/etc/php-fpm.d/www.conf」にログファイル名が記載されています。

post_max_size = 20M
upload_max_filesize = 20M
date.timezone = "Asia/Tokyo"
session.gc_maxlifetime = 3600
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass

(2) pearモジュールのインストール
必要に応じて、PEARのモジュールをインストールします。
【例】PEAR Mailモジュールのインストール。
# pear install -a Mail
※「-a」オプションを付けると、依存ファイルもすべてインストールします。

(3) Apacheの再起動
Apacheを再起動して、PHPを有効にします。
# systemctl restart httpd.service

5. php-fpmサービスの起動

# systemctl enable php-fpm.service
# systemctl start php-fpm.service

6. HTMLページをPHPとして動作させる場合の設定

通常、HTMLページをPHPとして動作させる場合には、.htaccessに
<FilesMatch \.html$>
  AddHandler application/x-httpd-php .html
</FilesMatch>
と記述すれば動作するはずですが、php-fpmを利用している場合には、設定が無効になる場合があります。
その場合には、以下のように設定します。

(1) .htacces
「/etc/httpd/conf.d/php.conf」において
# Redirect to local php-fpm (no mod_php in default configuration)
<IfModule !mod_php5.c>
  <IfModule !mod_php7.c>
    ()
    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
  </IfModule>
</IfModule>
というような記述があります。
そこで、同様にfpmに処理を引き渡す必要があるので、以下のように.htaccessを記述します。
<FilesMatch \.html$>
  SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>

(2) /etc/php-fpm.d/www.conf
デフォルトでは、PHPコードを実行可能なファイル拡張子が「.php」のみに制限されているため、「.html」も使用できるように設定します。
; Limits the extensions of the main script FPM will allow to parse. This can
; prevent configuration mistakes on the web server side. You should only limit
; FPM to .php extensions to prevent malicious users to use other extensions to
; exectute php code.
; Note: set an empty value to allow all extensions.
; Default Value: .php
;security.limit_extensions = .php .php3 .php4 .php5 .php7
の箇所の「security.limit_extensions」の項目を以下のように変更します。
security.limit_extensions = .php .html

php-fpmを再起動します。
# systemctl restart php-fpm.service

(3) 404エラーが「File not found.」になってしまう場合
.htaccessで「ErrorDocument 404 /404.html」などとしても、PHPのエラーが優先されて「File not found.」と表示されてしまいます。
この場合は、httpd.confなどに以下のように記述して下さい。
<VirtualHost *:80>
  <FilesMatch \.html$>
    SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
  </FilesMatch>
  ProxyErrorOverride on
</VirtualHost>


7. composerのインストール

composerをインストールします。
# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
# php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
# php composer-setup.php
# php -r "unlink('composer-setup.php');"
# mv composer.phar /usr/local/bin/composer

# composer -v
バージョン情報が表示されれば、正常に動作しています。
______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.1.6 2021-08-19 17:11:08
※rootユーザでcomposerを実行すると、
「Do not run Composer as root/super user! See https://getcomposer.org/root for details Continue as root/super user [yes]?」
という警告が表示されます。





最終更新:2025年02月27日 09:27