提供:すだちWiki
移動先: 案内検索

yumでPHP7.2をインストールする方法(CentOS7)

メインページ > CentOS 7 で自宅サーバー構築  > yumでPHP7.2をインストールする方法(CentOS7)

  • 自宅サーバーで、動作確認しています。導入される方は自己責任で行ってください。
  • EPELリポジトリ、Remiリポジトリを導入済みとします。
  • MediaWiki 1.31.1 動作しました。
  • WordPress 4.9.8 動作しました。

CentOSバージョン確認

[root@host2 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

Remiリポジトリをアップデートする

アップデート

[root@host4 ~]# yum update http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
・
・
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ remi-release.noarch 0:7.2-1.el7.remi を 更新
---> パッケージ remi-release.noarch 0:7.4-2.el7.remi を アップデート
--> 依存性解決を終了しました。

依存性を解決しました

repoファイルの変更

  • repoファイルが既に存在しているためrepo.rpmnewとして保存されてしまいました。
[root@host4 ~]# cd /etc/yum.repos.d/
[root@host4 yum.repos.d]# ll |grep remi-
-rw-r--r-- 1 root root  456  3月 21 22:28 remi-php54.repo
-rw-r--r-- 1 root root 1188  5月 15  2017 remi-php70.repo
-rw-r--r-- 1 root root 1314  3月 21 22:28 remi-php70.repo.rpmnew
-rw-r--r-- 1 root root 1201  4月  1 12:17 remi-php71.repo
-rw-r--r-- 1 root root 1314  3月 21 22:28 remi-php71.repo.rpmnew
-rw-r--r-- 1 root root 1325  4月  7 07:00 remi-php72.repo
-rw-r--r-- 1 root root  449  7月 20  2016 remi-safe.repo
-rw-r--r-- 1 root root  750  3月 21 22:28 remi-safe.repo.rpmnew
  • repoファイルが変更されないと意味がないのでファイル名を入れ替えます。
[root@host4 yum.repos.d]# mv remi-php70.repo remi-php70.repo.old && mv remi-php70.repo.rpmnew remi-php70.repo
[root@host4 yum.repos.d]# mv remi-php71.repo remi-php71.repo.old && mv remi-php71.repo.rpmnew remi-php71.repo
[root@host4 yum.repos.d]# mv remi-safe.repo remi-safe.repo.old && mv remi-safe.repo.rpmnew remi-safe.repo
[root@host4 yum.repos.d]# cd
[root@host4 ~]#
  • 他リポジトリとのパッケージの競合をさけるため、enabled=0 として普段は読まないようにしておく。
[root@host4 ~]# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/remi-safe.repo

PHP7.2用のRemiリポジトリの優先度を1(最大)にする

エラーが出たため、PHP7.2用のRemiリポジトリの優先度を1(最大)にすることで問題を回避しました。

[root@host4 ~]# vi /etc/yum.repos.d/remi-php72.repo

[remi-php72]
priority=1 ← 追加
name=Remi's PHP 7.2 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php72/$basearch/
#mirrorlist=https://rpms.remirepo.net/enterprise/7/php72/httpsmirror
mirrorlist=http://cdn.remirepo.net/enterprise/7/php72/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

既に入っているPHPのバージョン確認

自宅サーバー4号機

[root@host4 ~]# php -v
PHP 7.1.16 (cli) (built: Mar 28 2018 13:19:29) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.1.16, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

既に入っているPHPをアンインストール

インストール済みパッケージ確認

自宅サーバー4号機

PHP7.2にアップグレード前です。

[root@host4 ~]# rpm -qa | grep php
php-json-7.1.16-1.el7.remi.x86_64
php-mbstring-7.1.16-1.el7.remi.x86_64
php-pecl-xdebug-2.6.0-1.el7.remi.7.1.x86_64
php-mysqlnd-7.1.16-1.el7.remi.x86_64
php-xml-7.1.16-1.el7.remi.x86_64
php-pecl-igbinary-2.0.5-1.el7.remi.7.1.x86_64
php-pdo-7.1.16-1.el7.remi.x86_64
php-opcache-7.1.16-1.el7.remi.x86_64
php-fpm-7.1.16-1.el7.remi.x86_64
php71-php-json-7.1.16-1.el7.remi.x86_64
php71-php-pecl-imagick-3.4.3-8.el7.remi.x86_64
php-fedora-autoloader-1.0.0-1.el7.remi.noarch
php-cli-7.1.16-1.el7.remi.x86_64
php-devel-7.1.16-1.el7.remi.x86_64
php-gd-7.1.16-1.el7.remi.x86_64
php71-runtime-1.0-1.el7.remi.x86_64
php-process-7.1.16-1.el7.remi.x86_64
php-pecl-apcu-5.1.11-1.el7.remi.7.1.x86_64
php-7.1.16-1.el7.remi.x86_64
php-gmp-7.1.16-1.el7.remi.x86_64
php-pecl-redis-3.1.6-1.el7.remi.7.1.x86_64
php-common-7.1.16-1.el7.remi.x86_64
php-mcrypt-7.1.16-1.el7.remi.x86_64
php71-php-common-7.1.16-1.el7.remi.x86_64
php-pear-1.10.5-6.el7.remi.noarch

アンインストール

[root@host4 ~]# yum remove php php-* php* php71*

[root@host4 ~]# php -v

[root@host4 ~]# rpm -qa | grep php

バージョン情報が出てこなければアンインストール完了です。

インストール

インストール実行

※行の長さの関係で途中に改行が入ってます。注意してください。

[root@host4 ~]# yum --enablerepo=epel,remi,remi-php72 install php php-cli php-devel php-common php-mbstring php-mysqlnd php-fpm php-gd 
php-gmp php-mcrypt php-opcache php-pdo php-xml php-json
・
・
依存性を解決しました

================================================================================
 Package            アーキテクチャー
                                 バージョン              リポジトリー      容量
================================================================================
インストール中:
 php                 x86_64     7.2.4-1.el7.remi           remi-php72     3.2 M
 php-cli             x86_64     7.2.4-1.el7.remi           remi-php72     4.8 M
 php-common          x86_64     7.2.4-1.el7.remi           remi-php72     1.1 M
 php-devel           x86_64     7.2.4-1.el7.remi           remi-php72     1.2 M
 php-fpm             x86_64     7.2.4-1.el7.remi           remi-php72     1.6 M
 php-gd              x86_64     7.2.4-1.el7.remi           remi-php72      75 k
 php-gmp             x86_64     7.2.4-1.el7.remi           remi-php72      66 k
 php-json            x86_64     7.2.4-1.el7.remi           remi-php72      61 k
 php-mbstring        x86_64     7.2.4-1.el7.remi           remi-php72     620 k
 php-mysqlnd         x86_64     7.2.4-1.el7.remi           remi-php72     230 k
 php-opcache         x86_64     7.2.4-1.el7.remi           remi-php72     279 k
 php-pdo             x86_64     7.2.4-1.el7.remi           remi-php72     123 k
 php-pecl-mcrypt     x86_64     1.0.1-4.el7.remi.7.2       remi-php72      29 k
 php-xml             x86_64     7.2.4-1.el7.remi           remi-php72     203 k
依存性関連でのインストールをします:
 libargon2           x86_64     20161029-2.el7             epel            23 k

トランザクションの要約
================================================================================

追加パッケージをインストール

[root@host4 ~]# yum --enablerepo=remi,remi-php72 install php-pear php-pecl-xdebug
・
・
================================================================================
 Package                  アーキテクチャー
                                    バージョン              リポジトリー   容量
================================================================================
インストール中:
 php-pear                 noarch    1:1.10.5-6.el7.remi     remi-php72    356 k
 php-pecl-xdebug          x86_64    2.6.0-1.el7.remi.7.2    remi-php72    226 k
依存性関連でのインストールをします:
 php-fedora-autoloader    noarch    1.0.0-1.el7.remi        remi          8.9 k
 php-process              x86_64    7.2.4-1.el7.remi        remi-php72     77 k

トランザクションの要約
================================================================================
インストール  2 パッケージ (+2 個の依存関係のパッケージ)

php7.2インストール済みパッケージ確認

自宅サーバー4号機

[root@host4 ~]# rpm -qa | grep php
php-mysqlnd-7.2.4-1.el7.remi.x86_64
php-fpm-7.2.4-1.el7.remi.x86_64
php-xml-7.2.4-1.el7.remi.x86_64
php-fedora-autoloader-1.0.0-1.el7.remi.noarch
php-cli-7.2.4-1.el7.remi.x86_64
php-devel-7.2.4-1.el7.remi.x86_64
php-gmp-7.2.4-1.el7.remi.x86_64
php-process-7.2.4-1.el7.remi.x86_64
php-json-7.2.4-1.el7.remi.x86_64
php-7.2.4-1.el7.remi.x86_64
php-pecl-mcrypt-1.0.1-4.el7.remi.7.2.x86_64
php-opcache-7.2.4-1.el7.remi.x86_64
php-pecl-xdebug-2.6.0-1.el7.remi.7.2.x86_64
php-common-7.2.4-1.el7.remi.x86_64
php-gd-7.2.4-1.el7.remi.x86_64
php-pear-1.10.5-6.el7.remi.noarch
php-pdo-7.2.4-1.el7.remi.x86_64
php-mbstring-7.2.4-1.el7.remi.x86_64

php.iniの設定

[root@host4 ~]# vi /etc/php.ini

# [PHP]ブロック
expose_php = Off ← レスポンスヘッダにPHPのバージョンを表示させない
error_reporting = E_ALL ← 全てのログを出力させる
display_errors = Off ← ブラウザでのエラー表示させない
log_errors = On ← エラーをログに残す
log_errors_max_len = 4096 ← エラーログの長さを設定、念のため大きめに
error_log = "/var/log/php_errors.log" ← エラーログ出力先
default_charset = "UTF-8" ← 文字エンコーディング

#[Date]ブロック
date.timezone = "Asia/Tokyo" ← タイムゾーン

#[mbstring]ブロック
mbstring.language = Japanese ← デフォルト言語
mbstring.internal_encoding = UTF-8 ← 内部文字エンコーディング
mbstring.http_input = auto ← HTTP入力文字エンコーディングのデフォルト
mbstring.detect_order = auto ← 文字エンコーディング検出順序のデフォルト

Webサーバー再起動

[root@host4 ~]# systemctl restart httpd

phpバージョン確認

[root@host4 ~]# php -v
PHP 7.2.4 (cli) (built: Mar 27 2018 17:23:35) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.4, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

Imagickをphpで使う

[root@host4 ~]# yum -y install ImageMagick

[root@host4 ~]# yum -y install ImageMagick-devel

[root@host4 ~]# pecl install imagick

[root@host4 ~]# find / -name imagick.so
/usr/lib64/php/modules/imagick.so

[root@host4 ~]# cat /etc/php.d/imagick.ini
extension=imagick.so

[root@host4 ~]# systemctl restart httpd

[root@host4 ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2018-04-07 08:23:42 JST; 15s ago
     Docs: man:httpd(8)
           man:apachectl(8)
  Process: 19494 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
 Main PID: 19500 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           tq19500 /usr/sbin/httpd -DFOREGROUND
           tq19501 /usr/sbin/httpd -DFOREGROUND
           tq19502 /usr/sbin/httpd -DFOREGROUND
           tq19503 /usr/sbin/httpd -DFOREGROUND
           tq19504 /usr/sbin/httpd -DFOREGROUND
           mq19505 /usr/sbin/httpd -DFOREGROUND

 4月 07 08:23:42 host4.awajp.com systemd[1]: Starting The Apache HTTP Server...
 4月 07 08:23:42 host4.awajp.com systemd[1]: Started The Apache HTTP Server. 
Hint: Some lines were ellipsized, use -l to show in full.

PHPINFO

  • この画像は、古いバージョンです。

phpinfo72.png