私はデフォルトのphp_admin_value [memory_limit]を128Mから512Mに変更する必要があるスクリプトを書いています。 CLI または bash スクリプトでコマンドを実行するとエラーは発生しませんが、実際にファイルに更新は適用されません。私は何が間違っていましたか?
/etc/php-fpm.d/www.confファイルの行は次のとおりです。
;php_admin_value[メモリ制限] = 128M
これは私のコマンドです:
sudo sed -i 's/;php_admin_value[memory_limit] = 128M/php_admin_value[memory_limit] = 512M/' /etc/php-fpm.d/www.conf
答え1
sed正規表現では、[
次のようになります。特殊文字紹介した角かっこ表現。リテラル文字として扱うにはエスケープする必要があります。明確にするために仕上げフレーズを省略することもできますが、必ずしも]
必要ではありません。
だから
$ echo ';php_admin_value[memory_limit] = 128M' |
sed 's/;php_admin_value[memory_limit] = 128M/php_admin_value[memory_limit] = 512M/'
;php_admin_value[memory_limit] = 128M
失敗する、
$ echo ';php_admin_value[memory_limit] = 128M' |
sed 's/;php_admin_value\[memory_limit] = 128M/php_admin_value[memory_limit] = 512M/'
php_admin_value[memory_limit] = 512M
効果がありました。また、見ることができますshスクリプトでsedを使用するときにどの文字をエスケープする必要がありますか?