明けましておめでとうございます。とか言って、そろそろに1月が終わるところになりました。時間矢の如し、早う御座いますね。
ところでPHPのメジャーバージョン、PHP 8.0はすでにリリースされていますが、owner203はまだPHPのバージョンをアップグレードしていません。大きな変更もいくつかありますので、運用中のアプリケーションの完全対応までは、しばらく様子を見ようと思います。
さて、PHP 7.4のマイナーバージョンアップも割と頻繁にリリースされていますので、時々php.iniファイル自体の更新もあります。これは別に上書きせず、現在使用中のphp.iniファイルをそのまま維持しても構いませんが、しかし長期的で見ると、デフォルト設定の変更や説明文の更新も含まれているかもしれませんし、今までは新しいphp.iniファイルで一旦上書きして、vimなどでパラメーターを設定したい値に手動更新します。
しかし、設定したいインスタンスが多くなると、いちいち手動変更するのは大変面倒くさいことになります。なので、sedコマンドで一発でできる方法をここにメモします。使う時はコピペなりcronに追加するなり、楽になります。
設定環境
OSバージョン
Input cat /etc/lsb-release
Output DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS"
PHPバージョン
Input php -v
Output PHP 7.4.14 (cli) (built: Jan 13 2021 00:00:00) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.14, Copyright (c), by Zend Technologies
設定ファイルの場所
#Apache版 /etc/php/7.4/apache2/php.ini #FPM版 /etc/php/7.4/fpm/php.ini #CLI版 /etc/php/7.4/cli/php.ini
設定したいパラメーター
#Apache版、FPM版、CLI版共通 memory_limit = 1G post_max_size = 5G upload_max_filesize = 5G #CLI版のみAPCuに関する追記、APCuなしの場合は不要 [APCu] apc.enable_cli = 1
実行用コマンド
#Apache版 sudo cp /etc/php/7.4/apache2/php.ini /etc/php/7.4/apache2/php.ini.orig && sudo sed -i 's/memory_limit = .*/memory_limit = 1G/gI' /etc/php/7.4/apache2/php.ini && sudo sed -i 's/post_max_size = .*/post_max_size = 5G/gI' /etc/php/7.4/apache2/php.ini && sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 5G/gI' /etc/php/7.4/apache2/php.ini && diff /etc/php/7.4/apache2/php.ini.orig /etc/php/7.4/apache2/php.ini
#FPM版 sudo cp /etc/php/7.4/fpm/php.ini /etc/php/7.4/fpm/php.ini.orig && sudo sed -i 's/memory_limit = .*/memory_limit = 1G/gI' /etc/php/7.4/fpm/php.ini && sudo sed -i 's/post_max_size = .*/post_max_size = 5G/gI' /etc/php/7.4/fpm/php.ini && sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 5G/gI' /etc/php/7.4/fpm/php.ini && diff /etc/php/7.4/fpm/php.ini.orig /etc/php/7.4/fpm/php.ini
#CLI版 sudo cp /etc/php/7.4/cli/php.ini /etc/php/7.4/cli/php.ini.orig && sudo sed -i 's/memory_limit = .*/memory_limit = 1G/gI' /etc/php/7.4/cli/php.ini && sudo sed -i 's/post_max_size = .*/post_max_size = 5G/gI' /etc/php/7.4/cli/php.ini && sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 5G/gI' /etc/php/7.4/cli/php.ini && sudo sed -i '$a\n[APCu]\napc.enable_cli = 1' /etc/php/7.4/cli/php.ini && diff /etc/php/7.4/cli/php.ini.orig /etc/php/7.4/cli/php.ini
参考資料
sedコマンド自体の使い方などを調べるには以下のものを参考しました。
https://www.atmarkit.co.jp/ait/articles/1610/06/news021.html
https://hydrocul.github.io/wiki/commands/sed.html