ZabbixのPHPをバージョンアップする。

# 1. はじめに
Centos7系のPHPはバージョン5.4が入っていると思います。
PHPの5系はサポートが切れていることと、Wordpressを同じサーバーで運用したいと思ったので、PHPを7.3にバージョンアップしようと思います。
Zabbixは4.0が稼働中ため、PHPのバージョンアップに併せて、Zabbix側の設定変更も行います。
こちらは個人の環境(VPS)で実施しています。本番環境でやる場合は、ご注意ください。

# 2. PHP5.4のアンインストール

* 作業前の確認として、PHP関連でインストールされているものを確認します。

```
# rpm -qa | grep php
php-cli-5.4.16-46.el7.x86_64
php-pdo-5.4.16-46.el7.x86_64
php-common-5.4.16-46.el7.x86_64
php-5.4.16-46.el7.x86_64
php-mysql-5.4.16-46.el7.x86_64
php-bcmath-5.4.16-46.el7.x86_64
php-xml-5.4.16-46.el7.x86_64
php-gd-5.4.16-46.el7.x86_64
php-mbstring-5.4.16-46.el7.x86_64
php-ldap-5.4.16-46.el7.x86_64
```

* /etc/php.iniはバックアップしておいて、バージョンアップ後のコンフィグにデフォルトから変更した内容を反映出来るようにしておくと良いと思います。

* 下記コマンドで既存のPHP5.4をアンインストールします。

```# yum delete php```


```
==============================================================================================================
 Package                        Arch                 Version                      Repository             Size
==============================================================================================================
Removing:
 php                            x86_64               5.4.16-46.el7                @base                 4.4 M
Removing for dependencies:
 zabbix-web                     noarch               4.0.5-1.el7                  @zabbix                16 M
 zabbix-web-mysql               noarch               4.0.5-1.el7                  @zabbix               0.0

Transaction Summary
==============================================================================================================
Remove  1 Package (+2 Dependent packages)
```
依存の関係で、zabbix-webとzabbix-web-mysqlもアンインストールされました。
こちらも、PHP7.3のインストールに併せて、インストールします。

* PHP関連のものがまだ残っていたので、アンインストールします。

```# yum delete php-common```

# 3. PHP7.3のインストール

* 私の環境ではEPELリポジトリは導入済みだったので、Remiリポジトリを追加します。

```# yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm```

* もともと入っていたPHP関連のパッケージをインストールします。

```# yum install --enablerepo=remi --enablerepo=remi-php73 php php-cli php-pdo php-common php-mysql php-bcmath php-xml php-gd php-mbstring php-ldap zabbix-web zabbix-web-mysql```

ですが、下記のようにzabbix-web-mysqlの依存でエラーになりました。

```
--> Processing Dependency: php-mysql for package: zabbix-web-mysql-4.0.5-1.el7.noarch
Package php-mysql is obsoleted by php-mysqlnd, but obsoleting package does not provide for requirements
--> Finished Dependency Resolution
Package php-mysql is obsoleted by php-mysqlnd, but obsoleting package does not provide for requirements
--> Finished Dependency Resolution
Error: Package: zabbix-web-mysql-4.0.5-1.el7.noarch (zabbix)
           Requires: php-mysql
           Available: php-mysql-5.4.16-46.el7.x86_64 (base)
               php-mysql = 5.4.16-46.el7
           Available: php-mysql-5.4.45-16.el7.remi.x86_64 (remi)
               php-mysql = 5.4.45-16.el7.remi
           Available: php-mysql-5.4.45-17.el7.remi.x86_64 (remi)
               php-mysql = 5.4.45-17.el7.remi
           Available: php-mysqlnd-5.4.16-46.el7.x86_64 (base)
               php-mysql = 5.4.16-46.el7
           Available: php-mysqlnd-5.4.45-16.el7.remi.x86_64 (remi)
               php-mysql = 5.4.45-16.el7.remi
           Available: php-mysqlnd-5.4.45-17.el7.remi.x86_64 (remi)
               php-mysql = 5.4.45-17.el7.remi
           Available: php-pecl-mysql-1.0.0-0.20.20180226.647c933.el7.remi.7.3.x86_64 (remi-php73)
               php-mysql = 1:1.0.0
           Available: php-mysqlnd-7.3.2-1.el7.remi.x86_64 (remi-php73)
               Not found
           Available: php-mysqlnd-7.3.3-1.el7.remi.x86_64 (remi-php73)
               Not found
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest
```
検索すると下記情報が見つかりました。
https://www.sodo-shed.com/archives/12584
PHP7系には、php-mysqlはなくphp-mysqlndが入っていれば問題なさそうです。

先ほど実行したコマンドから「zabbix-web-mysql」を削除して実行します。

```# yum install --enablerepo=remi --enablerepo=remi-php73 php php-cli php-pdo php-common php-mysql php-bcmath php-xml php-gd php-mbstring php-ldap zabbix-web```

今度はエラーは出ず、インストールされるはずです。

* zabbix-web-mysqlは個別にrpmでインストールします。

```# wget https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-web-mysql-4.0.5-1.el7.noarch.rpm ```
```# rpm -ivh --nodeps zabbix-web-mysql-4.0.5-1.el7.noarch.rpm```

* インストールしたパッケージを確認します。

```
# rpm -qa | grep php
php-json-7.3.3-1.el7.remi.x86_64
php-mysqlnd-7.3.3-1.el7.remi.x86_64
php-bcmath-7.3.3-1.el7.remi.x86_64
php-ldap-7.3.3-1.el7.remi.x86_64
php-common-7.3.3-1.el7.remi.x86_64
php-gd-7.3.3-1.el7.remi.x86_64
php-pgsql-7.3.3-1.el7.remi.x86_64
php-cli-7.3.3-1.el7.remi.x86_64
php-xml-7.3.3-1.el7.remi.x86_64
php-mbstring-7.3.3-1.el7.remi.x86_64
php-pdo-7.3.3-1.el7.remi.x86_64
php-7.3.3-1.el7.remi.x86_64
```

```
# rpm -qa | grep zabbix
zabbix-web-mysql-4.0.5-1.el7.noarch
zabbix-server-mysql-4.0.5-1.el7.x86_64
zabbix-release-4.0-1.el7.noarch
zabbix-web-4.0.5-1.el7.noarch
zabbix-agent-4.0.5-1.el7.x86_64
zabbix-web-pgsql-4.0.5-1.el7.noarch
zabbix-get-4.0.5-1.el7.x86_64
```

# 4. PHPバージョンアップに伴う設定変更

* 「/etc/httpd/conf.d/zabbix.conf」の設定変更をします。
```<IfModule mod_php5.c>```
↓
```<IfModule mod_php7.c>```

* PHPの設定変更をします。
Zabbixに関しては「/etc/php.ini」で「date.timezone = Asia/Tokyo」とすれば良いはずです。

* 設定反映のためhttpdを再起動します。
```# systemctl restart httpd.service ```

# 5. 正常性の確認
Zabbixのダッシュボードにログイン出来ることを確認します。
https://ホスト名/zabbix/
各種ログを見て、エラーが出ていないか確認します。