エラー内容・起こった状況
辿ったリンクは期限が切れています。もう一度お試しください。
WordPress管理画面からCocoonテーマをアップロードしたところ発生。
構築環境
- AWSにてWebサーバー用のEC2(
AmazonLinux2023
)を作成して構築している - WebサーバーにはApacheをインストールしている
結論
1. php.ini
のupload_max_filesize
とpost_max_size
の上限を変更
php.ini
// 変更前
post_max_size = 8M
upload_max_filesize = 2M
// 変更後(サイズは自分のインストールしたいテーマに合わせる)
post_max_size = 20M
upload_max_filesize = 20M
2. 自分が使用しているプロセスマネージャーを再起動して反映させる
Apacheのモジュールであるmod_phpを使用している場合
sudo systemctl restart httpd.service
プロセスマネージャーであるPHP-FPMを使用している場合
sudo systemctl restart php-fpm
「1.」については記事が多く出てくるが、
「2.」についてApache周りの理解が浅くて気づくのに時間がかかったので記事にした
詳しい手順
1. php.ini
のupload_max_filesize
とpost_max_size
の上限を変更
php.iniはetcディレクトリにある
cd /etc/
ls -la | grep "ini"
編集する前にバックアップを取っておくのがおすすめ
cp php.ini php.ini-YYYYMMDDbkup
vimやnano等、好きな方法で値を変更する
sudo vi php.ini
// 以下の2箇所を書き換える
post_max_size = 20M
...
upload_max_filesize = 20M
差分確認
diff php.ini php.ini-YYYYMMDDbkup
2. 自分が使用しているプロセスマネージャーを再起動して反映させる
Apacheのmod_php
モジュールあるいは、プロセスマネージャーのPHP-FPM
どちらを使っているか確認して、使っている方に対して再起動をかける
🔴Apacheのmod_phpモジュールを使っているか確認するコマンド
// mod_phpなどが表示されるか確認(何も出なければ使われていない)
httpd -M | grep php
🔵プロセスマネージャーのPHP-FPMを使っているか確認するコマンド
// activeの場合、使われている
systemctl status php-fpm
🔴再起動(Apacheのmod_phpモジュールの場合)
sudo systemctl restart httpd.service
🔵再起動(PHP-FPMの場合)
sudo systemctl restart php-fpm
これで再度テーマをアップロードしたところ、成功した🎉
PHP-FPMとは
Apacheとの役割の違いは?
- ApacheはWebサーバーで、ユーザーからのリクエストを受け取って、HTMLや画像などのファイルを返す役割
- PHP-FPMはプロセスを管理する役割(PHPプログラムに特化)
- 起動:プログラムを実行する際に、必要なリソースを割り当ててプロセスを開始
- 監視:プロセスが正常に動作しているかを監視して、もし問題があれば、再起動したり、エラーメッセージを表示
- 終了:プログラムが終了したり、必要がなくなった場合に、プロセスを適切に終了
- リソース管理:CPUやメモリなどのリソースをどのプロセスにどれだけ割り当てるかを管理
Apacheとの関係性は?
- Apacheは、PHP-FPMを「内包」しているのではなく、「連携」している
- Apacheがリクエストを受け取ると、そのリクエストをPHP-FPMに渡して、PHPスクリプトを実行させ、その結果をApacheがクライアントに返している
- mod_phpよりも PHP-FPMの方が特化した機能を持っており優れている
- nginxの場合は、PHP-FPMしかない
- Apacheの場合、モジュールか、PHP-FPMかを選べる
まとめ
- 上限の設定を変更操作した後に、再起動する対象は何かを理解する必要があった
- 具体的にはApacheのモジュールmod_phpではなく、PHP-FPMというプロセス管理(PHP専用)に特化したプロセスマネージャーを導入していたので、そちらに対して再起動をかけて上限値を反映させる必要があった
同じように詰まった人の参考になれば幸いです。