2 MB を超える WordPress ファイルを AWS Elastic Beanstalk 環境にアップロードしようとすると、 「The uploaded file exceeds the upload_max_filesize directive in php.ini.」というエラーメッセージが表示されます。
簡単な説明
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) を更新します。
-
コードエディタで 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 です。
-
アプリケーションソースバンドルのルートで .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 プラットフォームでは、ファイル名 99uploadsize.ini を z99uploadsize.ini に変更します。新しい PHP 設定でデフォルトを上書きできるようにするには、.ebextension のすべての場所でファイル名を変更します。
-
Elastic Beanstalk コンソールを開き、アプリケーションソースバンドルの zip アーカイブを作成します。
-
コードを既存の Elastic Beanstalk 環境にアップロードするには、環境を選択してから、[アップロードしてデプロイ] を選択します。
**注:**新しい Elastic Beanstalk 環境にコードをデプロイするには、Elastic Beanstalk 環境を参照してください。
.ebextensions ファイルをアップロードした後もエラーメッセージが消えない場合は、YAML バリデーターを使用して、コード内の空白エラーを確認してください。さらに、remove_old_ini コマンドを実行し、不要なバックアップファイルを削除してください。詳細については、「Elastic Beanstalk 設定で php.ini を拡張する」を参照してください。
LAMP スタックを実行している単一の Amazon EC2 インスタンスのアップロードファイルサイズを変更する
-
/etc/php.ini ファイルを vi エディタで開くには、次のコマンドを実行します。
$ sudo vi /etc/php.ini
注: /etc/php.ini ファイルの名前またはパスは、使用している PHP または AMI のバージョンによって異なる場合があります。
-
vi エディタで upload_max_filesize パラメータの値を 2 MB より大きいサイズに変更し、ファイルを保存します。
注: memory_limit などの php.ini パラメータを変更するには、post_max_size の php.ini ディレクティブを参照してください。詳細については、PHP のウェブサイトで post_max_size エントリを参照してください。
-
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 プロセスのメモリを制限します。
関連情報
設定ファイル (.ebextensions) を使用した高度な環境のカスタマイズ
外部 Amazon Relational Database Service (Amazon RDS) データベースを使用して高可用性 WordPress ウェブサイトを Elastic Beanstalk にデプロイする
チュートリアル: AL2 で WordPress ブログをホストする
コア php.ini ディレクティブに関する説明 (PHP のウェブサイト)