【ZABBIX 7.0】テンプレート（2MB以上）エクスポートエラー対応

# はじめに
「ZABBIX4.0」で使用していたテンプレートを「ZABBIX7.0」にインポートしようとしたところ、アップロードサイズ制限でインポートに失敗した。

※ ファイル選択時にエラーが出た。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/cc4e705c-6df4-3dd2-e289-b9608f2e2cf7.png)

アップロードを行おうとしたファイルを確認すると、約「5MB」であった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/7c39ce4e-bd7d-7c6b-c8ce-3f03b3909409.png)

以下サイトを参考に対応しようとしたが、ZABBIXの仕様の変更？などでうまくいかなかった。なので自分なりに調べて解決できたので、ここに情報を残したいと思う。

[**【エクスポートしたZabbixのテンプレートのサイズが2Mを超えてしまい、インポートができなくなった人向けメモ】**](https://sechiro.hatenablog.com/entry/2013/08/27/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%81%97%E3%81%9FZabbix%E3%81%AE%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%8C2M%E3%82%92)

# 解決方法（結論）
さっさと解決方法が知りたいんじゃ！という方のために、結論から先に書いときますね。

① 「upload_max_filesize」のアップロード最大サイズを上げる。
② 「memory_limit」のメモリ使用上限を上げる。
③ 「systemctl reload php-fpm」を実施し、変更した定義を適用する。

```terminal:/etc/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache

listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session

php_value[max_execution_time] = 300
php_value[memory_limit] = 128M　←- ★★★ここを修正する。★★★
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M　←- ★★★ここを修正する。★★★
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
```


# 環境
ZABBIX環境を以下に記載する。

以下参照：
[**【検証】ZABBIX7.0 構築編**](https://qiita.com/ponponpoko/items/0a2408af041d44215637)

# 状況確認
PHP設定でアップロード最大サイズが現在どうなっているか確認してみる。

ZABBIXで使用されているPHP関連のファイルが配置されている階層は、「/usr/share/zabbix」である。そこに以下のファイルを配置し、PHPの設定状況をブラウザから確認する。

```terminal:/usr/share/zabbix/info.php
<?php
phpinfo();
```

ブラウザアクセス：
http://\<zabbix-serverのIP>/zabbix/info.php

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/09eb2ada-0188-f3a8-7820-f9834e1ab4bb.png)

アップロード最大サイズは「upload_max_filesize」で設定されている。「2M」になっていることがわかる。

# 「upload_max_filesize」設定変更
今回「PHP-FPM」をPHPの実行環境として使用しているので、「upload_max_filesize」を変更するには「/etc/php-fpm.d/zabbix.conf」を修正する必要がある。

私の場合は、アップロードするサイズが約「5MB」あるので「upload_max_filesize」を「5MB」に変更しました。
```terminal:/etc/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache

listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session

php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M　←- ★★★ここを修正する。★★★
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
```
変更後は、「systemctl reload php-fpm」を実行し、変更を反映させる。
再度ブラウザからPHP設定状況を確認すると変更されていることが確認できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/3ff8a474-4a92-7549-fb76-270bc6c53dca.png)

# 再アップロード
再度、ファイルを選択してみると、「2M」制限エラーは出てこない。
これでインポートできる！！！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/850f3682-3926-f2da-ad52-e5bd504f04a3.png)

っと、思ったが「想定しないエラーが発生しました。」と別のエラーが出た。
・・・。(；ﾟДﾟ)は？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/35eff309-f67a-7b5e-8677-2f17f7c71f3b.png)

# 原因究明
原因究明するために、以下のフロントエンドのエラーログファイルを確認してみる。
・/var/log/php-fpm/error.log（PHP-FPM エラーログファイル）
・/var/log/httpd/error_log（Apache HTTP エラーログファイル）

再度インポートを実施し、エラーログを確認してみたところ以下のエラーが出力された。
※ PHP-FPM エラーログファイルは、特に何も出力されなかった。

```terminal:/var/log/httpd/error_log
[root@RHEL8 ~]# tail -f /var/log/httpd/error_log
[Mon Oct 14 22:09:36.377876 2024] [proxy_fcgi:error] [pid 6452:tid 140362467235584] [client 192.168.10.1:53884] AH01071: Got error 'PHP message: PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /usr/share/zabbix/include/classes/html/CTag.php on line 106', referer: http://zabbixsvr/zabbix/zabbix.php?action=template.list
```
```terminal:翻訳
 PHP 致命的なエラー：  usr/share/zabbix/include/classes/html/CTag.php on line 106', referer: http://zabbixsvr/zabbix/zabbix.php?action=template.list において、許容メモリサイズ 134217728 バイトを使い果たしました (20480 バイトを割り当てようとしました)。
```

どうやらPHPの処理でメモリ制限（128MB）を超える処理をしてしまったことにより、インポートが失敗したようだ。てことは、PHPのメモリ制限の上限を上げればいいってこと。

※ ブラウザから現在のメモリ制限状態を確認（memory_limit）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/7a878490-10ba-82a8-e701-82c4d925a64b.png)



# メモリ制限の引き上げ

メモリ制限は「memory_limit」で設定する。値を変更するには、再度「/etc/php-fpm.d/zabbix.conf」を修正する必要がある。

私の場合は、とりあえず2倍の「256MB」に変更したよ。
```terminal:/etc/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache

listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session

php_value[max_execution_time] = 300
php_value[memory_limit] = 128M　←- ★★★ここを修正する。★★★
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
```
変更後は、「systemctl reload php-fpm」を実行し、変更を反映させる。
再度ブラウザからPHP設定状況を確認すると変更されていることが確認できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/60df24d0-f1ac-6ea4-5237-04cf6dfe560f.png)

# 再々アップロード
再度インポートをしてみると、今度はうまくいきました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/8d9f5743-cb32-6098-b7b9-7bbc9f5629c7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/0285a092-87bb-b3b6-d36c-0cc3cf6cfbf2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/bab67b6f-7200-afc3-81a1-453c609802a6.png)






# その他


https://qiita.com/kotarella1110/items/634f6fafeb33ae0f51dc


```terminal:/etc/httpd/conf.d/zabbix.conf
#
# Zabbix monitoring system php web frontend
#

Alias /zabbix /usr/share/zabbix

ProxyTimeout 300

<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Require all granted

    <IfModule dir_module>
        DirectoryIndex index.php
    </IfModule>

    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/run/php-fpm/zabbix.sock|fcgi://localhost"
    </FilesMatch>
</Directory>
```