Je veux changer certaines variables php.ini
(php5.6) via le terminal. Exemple: Je dois obtenir la valeur post_max_size
(celle-ci est maintenant 8M
), l'afficher dans le terminal, la changer en 2048M
et l'afficher à nouveau.
Comment pourrais-je faire ça?
Obtenir:
grep '^post_max_size ' php.ini
Remplacer:
sed -i 's,^post_max_size =.*$,post_max_size = 2048M,' php.ini
Notez qu'il est judicieux de créer une sauvegarde de php.ini
avant d'exécuter sed
:
cp php.ini php.ini.bak
Je suppose que vous avez les valeurs dans votre php.ini
stockées une par ligne et séparées par =
avec ou sans espaces. Ni les noms de variables ni les valeurs ne contiennent un =
.
Pour imprimer la valeur post_max_size
(en choisir une):
<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.*'
Pour changer la valeur de post_max_size
en 2048M
en créant une sauvegarde appelée php.ini.bak
:
sed -i.bak '/^ *post_max_size/s/=.*/= 2048M/' php.ini
<php.ini awk -F"= *" '/^ *post_max_size/{print$2}'
<php.ini
- laissez le shell ouvrir php.ini
et l'affecter au stdin du programme. Cela présente un certain nombre d'avantages. Voir ici-F"= *"
- définissez =
suivi de zéro ou de plusieurs espaces comme délimiteur de champ/^ *post_max_size/{print$2}
- de la ligne commençant par post_max_size
champ d'impression 2
<php.ini sed '/^ *post_max_size/!d;s/.*= *//'
/^ *post_max_size/!d
- d
elete toutes les lignes sauf celle commençant par post_max_size
s/.*= *//
- s
substitute tout ce qui se trouve avant =
et zéro ou plusieurs espaces après celui-ci par rien (= le supprime)<php.ini grep -oP '^ *post_max_size *= *\K.*'
-oP
- print o
nly les parties correspondantes d'une ligne correspondante et utiliser P
erl-compatible expressions (PCRE)^ *post_max_size *= *\K.*
- recherche une ligne commençant par post_max_size
et =
entourée de zéro ou plusieurs caractères d'espacement, puis supprime le texte correspondant si loin de la correspondance regex globale (\K
) et correspond à tout ce qui suitsed -i.bak '/^ *post_max_size/s/=.*/= 2048M/' php.ini
-i.bak
- change le lieu du fichier i
n en effectuant une sauvegarde avec l'extension .bak
/^ *post_max_size/…
- dans la ligne commençant par post_max_size
, faites …
s/=.*/= 2048M/
- s
ubstitute =
et tout ce qui suit après avec = 2048M