こんにちは。
Magentoの管理画面からアップロードできるカテゴリ画像は、上限サイズが設定されています。
この上限サイズは、システムの設定やサーバ環境に依存しており、必要に応じて変更することが可能です。
今回は、そこのカテゴリ画像の上限サイズの仕組みと、その変更方法について調べてみました。
管理画面に表示される上限サイズ
カテゴリ画像は、[Catalog>Categories] よりカテゴリを選択し、[Content>Category Image] からアップロードする事ができます。
この時、(上記のケースでは)アップロードボタンの下に
Maximum file size: 2 MB
と表示されています。
これは、アップロードできる上限サイズが表示されているのですが、この「2MB」ってなんの値やろって思いますよね…?
結論としては、以下①②のいずれか小さい方の値が、上限サイズとして表示されています。
①MagentoのmaxFileSize設定
MagentoのXMLファイルに設定されている maxFileSize の値です。
アプリケーションレベルでファイルサイズを制限したい場合に定義します。
これにより、不要に大きなファイルがサーバにアップロードされるのを防ぐことができます。
②PHPの設定
サーバの php.iniファイル等で設定される upload_max_filesize と post_max_size の値です。
実際にアップロード可能なサイズは、このPHP設定によって最終的に制限されます。
- upload_max_filesize : アップロード可能な最大ファイルサイズ
- post_max_size : POSTリクエスト全体の最大サイズ
なので、例えば maxFileSize が4MBに設定されていても、PHPのupload_max_filesize が2MBの場合、2MBを超えるファイルをアップロードする事はできません。
その場合、管理画面には、Maximum file size: 2 MB と表示されます。
上限サイズの変更方法は?
上限サイズを変更するには、以下の2つの方法があります。
方法1:XMLファイルの maxFileSize を変更
この方法は、PHPのupload_max_filesizeやpost_max_size より小さいサイズに制限したい場合に有効です。
カテゴリ画像のmaxFileSizeを変更するには、Magento_Catalogモジュールのproduct_form.xmlをカスタマイズします。
コアファイルのproduct_form.xml内には、下記のようなmaxFileSizeの設定があります。
この値を制限したいサイズにカスタマイズすればOKです。
maxFileSizeはバイト単位で指定する必要があります。
<imageUploader>
<settings>
<required>false</required>
・・・
<allowedExtensions>jpg jpeg gif png</allowedExtensions>
<maxFileSize>4194304</maxFileSize> <!-- 4MBを指定 -->
</settings>
</imageUploader>
なお、コアファイルの直接編集は非推奨となっています。
以下のようなカスタマイズ用のXMLを用意し、maxFileSizeの値を変更しましょう。
・独自モジュールを使用する場合
ファイルパス:app/code/[Vendor]/[Module]/view/adminhtml/ui_component/product_form.xml
・テーマを使用する場合
ファイルパス:app/design/adminhtml/[Vendor]/[Theme]/Magento_Catalog/ui_component/product_form.xml
方法2:PHP の設定を変更
より大きなファイルをアップロードしたい場合、PHPのupload_max_filesizeやpost_max_sizeの設定値を調整します。
例えばphp.iniファイルを編集し、以下のように設定します。
upload_max_filesize = 10M
post_max_size = 12M
あわせてXMLファイルのmaxFileSizeも、PHPの設定値以下のサイズに調整すればOKです。
但し、PHPの設定値を変更する場合は、他の設定値も含め、環境や要件に応じてサーバのリソースやセキュリティリスクに注意しながら調整してください。