web-dev-qa-db-ja.com

ターミナルからphp.ini変数を取得および設定する方法

ターミナルでいくつかのphp.ini(php5.6)変数を変更したい。例:post_max_size値(現時点では8M)を取得し、ターミナルで表示し、2048Mに変更して、再度表示する必要があります。

どうすればそれができますか?

3
zwitterion

取得する:

grep '^post_max_size ' php.ini

交換:

sed -i 's,^post_max_size =.*$,post_max_size = 2048M,' php.ini

sedを実行する前に、php.iniのバックアップを作成することをお勧めします。

cp php.ini php.ini.bak
4

php.iniの値は1行に1つずつ保存され、=で区切られ、周囲のスペースの有無にかかわらず値があると思います。変数名にも値にも=が含まれていません。

printpost_max_size値(いずれかを選択):

<php.ini awk -F"= *" '/^ *post_max_size/{print$2}'
<php.ini sed '/^ *post_max_size/!d;s/.*= *//'
<php.ini grep -oP '^ *post_max_size *= *\K.*'

post_max_sizeの値を2048Mchangeに変更して、php.ini.bakというバックアップを作成します。

sed -i.bak '/^ *post_max_size/s/=.*/= 2048M/' php.ini

説明

  • <php.ini awk -F"= *" '/^ *post_max_size/{print$2}'
    • <php.ini –シェルでphp.iniを開いてプログラムの標準入力に割り当てます。これには多くの利点があります。 here を参照してください
    • -F"= *"=の後にフィールド区切り文字として0個以上のスペース文字を続けて設定します
    • /^ *post_max_size/{print$2}post_max_sizeで始まる行から印刷フィールド2
  • <php.ini sed '/^ *post_max_size/!d;s/.*= *//'
    • /^ *post_max_size/!ddpost_max_sizeで始まる行を除くすべての行を選択します
    • s/.*= *//s_=の前のすべてを置換し、その後にゼロ以上のスペース文字を何も付けない(=削除)
  • <php.ini grep -oP '^ *post_max_size *= *\K.*'
    • -oPonly一致する行の一致した部分を印刷し、Perl互換の正規表現(PCRE)を使用します
    • ^ *post_max_size *= *\K.* – 0個以上のスペース文字で囲まれたpost_max_sizeおよび=で始まる行を検索し、全体の正規表現一致からこれまでに一致したテキストを削除します(\K)そして、その後のすべてに一致します
  • sed -i.bak '/^ *post_max_size/s/=.*/= 2048M/' php.ini
    • -i.bak –ファイルの変更in拡張子.bakでバックアップを作成する場所
    • /^ *post_max_size/…post_max_sizeで始まる行で、を実行します
    • s/=.*/= 2048M/substitute =およびその後のすべてを= 2048M
1
dessert