Elastic Beanstalk 環境で 2 MB を超える WordPress ファイルをアップロードする方法を教えてください。
最終更新日: 2020 年 12 月 30 日
2 MB を超える WordPress ファイルを AWS Elastic Beanstalk 環境にアップロードしようとすると、「アップロードされたファイルが php.ini の upload_max_filesize ディレクティブを超えています」というエラーメッセージが表示されます。
簡単な説明
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスのデフォルトの PHP 設定では、2 MB を超える WordPress ファイルをアップロードできません。2 MB より大きいファイルをアップロードするには、/etc/php.ini ファイルの upload_max_filesize パラメータのデフォルト値を変更します。
重要: M と MB は、「メガバイト」に相当する記号です。 例えば、2 M は 2 MB に相当します。ただし、設定ファイルでは MB は無効であるため、M のみを使用してください。
解決方法
ソリューションスタックに適用される解決方法を選択してください。
PHP ソリューションスタックを実行する Elastic Beanstalk 環境のアップロードファイルサイズを更新する
すべてのインスタンスでファイルサイズを増やすには、以下の手順を実行して、基盤となる Amazon マシンイメージ (AMI) を更新します。
1. コードエディタで、change_upload_size.config という名前の新しいファイルを作成し、次のコードをファイルに追加します。
files:
"/etc/php.d/99uploadsize.ini":
mode: "000644"
owner: root
group: root
content: |
upload_max_filesize = 100M
post_max_size = 100M
commands:
remove_old_ini:
command: "rm -f /etc/php.d/99uploadsize.ini.bak"
注: 上記の例では、post_max_size パラメータの値がデフォルトの 32M から 100M に更新されています。
ヒント: memory_limit などの php.ini パラメータを変更するには、post_max_size の php.ini ディレクティブを参照してください。Elastic Beanstalk の memory_limit の最大値は 256M です。
2. アプリケーションソースバンドルのルートで、.ebextensions という新しいディレクトリを作成し、change_upload_size.config ファイルを .ebextensions ディレクトリに移動します。
.ebextensions ディレクトリがすでにアプリケーションソースバンドル内にある場合は、change_upload_size.config ファイルを他の .config ファイルとともに .ebextensions ディレクトリに保持します。ディレクトリ構造は、次の例のようになります。
├── wp-site.zip/
├── .ebextensions/
├── change_upload_size.config
├── wp-content/
├── wp-includes/
├── wp-admin/
├── LICENSE
├── README.md
├── index.php
├── license.txt
├── readme.html
├── ...
├── ...
├── ...
├── ...
├── wp-settings.php
├── wp-signup.php
├── wp-trackback.php
└── xmlrpc.php
重要: Elastic Beanstalk ベースの Amazon Linux 2 プラットフォームの場合、.ebextension のすべての場所で 99uploadsize.ini というファイル名を z99uploadsize.ini に変更して、新しい PHP 設定がデフォルトを上書きできるようにします。
3. Elastic Beanstalk コンソールを開き、アプリケーションソースバンドルの zip アーカイブを作成します。
4. コードを既存の Elastic Beanstalk 環境にアップロードするには、環境を選択してから、[アップロードしてデプロイ] を選択します。
注: 新しい Elastic Beanstalk 環境にコードをデプロイするには、Elastic Beanstalk 環境の作成をご参照ください。
.ebextensions ファイルをアップロードした後もエラーメッセージが消えない場合は、YAML バリデーターを使用して、コード内の空白エラーを確認してください。また、remove_old_ini コマンドを使用して、不要なバックアップファイルを削除することも検討してください。詳細については、php.ini の拡張をご参照ください。
LAMP スタックを実行している単一の Amazon EC2 インスタンスのアップロードファイルサイズを変更する
1. /etc/php.ini ファイルを vi エディタで開くには、次のコマンドを実行します。
$ sudo vi /etc/php.ini
注: /etc/php.ini ファイルの名前またはパスは、使用している PHP または AMI のバージョンによって異なる場合があります。
2. vi エディタで、upload_max_filesize パラメータの値を 2 MB より大きいサイズに変更し、ファイルを保存します。
ヒント: memory_limit などの php.ini パラメータを変更するには、post_max_size の php.ini ディレクティブを参照してください。詳細については、PHP ウェブサイトの post_max_size エントリを参照してください。
3. Apache サーバーを正常に再起動するには、環境に応じた適切なコマンドを実行します。
Amazon Linux の場合:
$ sudo service httpd graceful
Amazon Linux 2 の場合:
$ sudo service httpd reload
注: /etc/php.ini ファイルの名前またはパスは、使用している PHP または AMI のバージョンによって異なる場合があります。Apache サーバーを再起動するコマンドは、Amazon Linux AMI 以外のディストリビューションを使用している場合も異なる場合があります。WordPress は、デフォルトで PHP プロセスのメモリを制限します。