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_sizephp.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_sizephp.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 プロセスのメモリを制限します。