[AWS] PHP7.4のインストール 【Amazon Linux 2】

amazon-linux-extrasを利用して、PHP7.4をインストールします。

1. amazon-linux-extrasによるインストール

(1) phpのインストール
まずインストールすることのできるソフトウェアおよびバージョンを確認します。
$ sudo amazon-linux-extras

 0  ansible2                 available    \
       [ =2.4.2  =2.4.6  =2.8  =stable ]
 2  httpd_modules            available    [ =1.0  =stable ]
 3  memcached1.5             available    \
       [ =1.5.1  =1.5.16  =1.5.17 ]
 5  postgresql9.6            available    \
       [ =9.6.6  =9.6.8  =stable ]
 6  postgresql10             available    [ =10  =stable ]
 8  redis4.0                 available    \
       [ =4.0.5  =4.0.10  =stable ]
 9  R3.4                     available    [ =3.4.3  =stable ]
10  rust1                    available    \
       [ =1.22.1  =1.26.0  =1.26.1  =1.27.2  =1.31.0  =1.38.0
         =stable ]
11  vim                      available    [ =8.0  =stable ]
15  php7.2                   available    \
       [ =7.2.0  =7.2.4  =7.2.5  =7.2.8  =7.2.11  =7.2.13  =7.2.14
         =7.2.16  =7.2.17  =7.2.19  =7.2.21  =7.2.22  =7.2.23
         =7.2.24  =7.2.26  =stable ]
17  lamp-mariadb10.2-php7.2  available    \
       [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5
         =10.2.10_7.2.8  =10.2.10_7.2.11  =10.2.10_7.2.13
         =10.2.10_7.2.14  =10.2.10_7.2.16  =10.2.10_7.2.17
         =10.2.10_7.2.19  =10.2.10_7.2.22  =10.2.10_7.2.23
         =10.2.10_7.2.24  =stable ]
18  libreoffice              available    \
       [ =5.0.6.2_15  =5.3.6.1  =stable ]
19  gimp                     available    [ =2.8.22 ]
20  docker=latest            enabled      \
       [ =17.12.1  =18.03.1  =18.06.1  =18.09.9  =stable ]
21  mate-desktop1.x          available    \
       [ =1.19.0  =1.20.0  =stable ]
22  GraphicsMagick1.3        available    \
       [ =1.3.29  =1.3.32  =1.3.34  =stable ]
23  tomcat8.5                available    \
       [ =8.5.31  =8.5.32  =8.5.38  =8.5.40  =8.5.42  =8.5.50
         =stable ]
24  epel=latest              enabled      [ =7.11  =stable ]
25  testing                  available    [ =1.0  =stable ]
26  ecs                      available    [ =stable ]
27  corretto8                available    \
       [ =1.8.0_192  =1.8.0_202  =1.8.0_212  =1.8.0_222  =1.8.0_232
         =1.8.0_242  =stable ]
28  firecracker              available    [ =0.11  =stable ]
29  golang1.11               available    \
       [ =1.11.3  =1.11.11  =1.11.13  =stable ]
30  squid4                   available    [ =4  =stable ]
31  php7.3                   available    \
       [ =7.3.2  =7.3.3  =7.3.4  =7.3.6  =7.3.8  =7.3.9  =7.3.10
         =7.3.11  =7.3.13  =stable ]
32  lustre2.10               available    \
       [ =2.10.5  =2.10.8  =stable ]
33  java-openjdk11           available    [ =11  =stable ]
34  lynis                    available    [ =stable ]
35  kernel-ng                available    [ =stable ]
36  BCC                      available    [ =0.x  =stable ]
37  mono                     available    [ =5.x  =stable ]
38  nginx1                   available    [ =stable ]
39  ruby2.6                  available    [ =2.6  =stable ]
40  mock                     available    [ =stable ]
41  postgresql11             available    [ =11  =stable ]
42  php7.4                   available    [ =stable ]
43  livepatch                available    [ =stable ]
44  python3.8                available    [ =stable ]
45  haproxy2                 available    [ =stable ]
46  collectd                 available    [ =stable ]
47  aws-nitro-enclaves-cli   available    [ =stable ]
48  R4                       available    [ =stable ]


ここで42の「php7.4」をインストールします。
$ sudo amazon-linux-extras install php7.4

(2) php-develのインストール
「epel」、「remi」リポジトリをインストールする方法は、yumのリポジトリの追加登録方法【Amazon Linux 2】を参照して下さい。

$ sudo yum install --enablerepo=epel,remi,remi-php74 php-devel

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

(1) libmcryptのインストール
$ sudo yum install --enablerepo=epel libmcrypt

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

3. PHPの設定

(1) PHPのモジュールのインストール
追加でPHPのモジュールをインストールします。
$ sudo yum install php-mysqlnd
$ sudo yum install php-mbstring
$ sudo yum install php-gd
$ sudo yum install php-xml
$ sudo yum install php-xmlrpc
$ sudo yum install php-opcache
$ sudo yum install php-pecl-zip
$ sudo yum install php-pear
$ sudo yum install --enablerepo=remi,remi-php74 php-pecl-mcrypt

(2) php.iniの編集
$ sudo cp /etc/php.ini{,.default}
$ sudo vi /etc/php.ini
expose_php = Off
max_execution_time = 60
;memory_limit = 128M
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

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

(5) php-fpmサービスの起動
$ sudo systemctl enable php-fpm.service
$ sudo systemctl restart php-fpm.service

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

通常、HTMLページをPHPとして動作させる場合には、.htaccessに
<FilesMatch \.html$>
  AddHandler application/x-httpd-php
</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



最終更新:2022年02月08日 08:07