从shell脚本更改php.ini的值

9

我是一个新手,对shell脚本不熟悉。我正在运行Vagrant,并发现自己需要在php.ini中调整这些设置:

upload_max_filesize 120M
post_max_size 120M
max_execution_time 200
max_input_time 200

我该如何将它们添加到shell脚本中,以便在第一次vagrant up时只需设置我的机器?

我过去曾经使用过 sed 来完成这个任务。 - Brad
2个回答

19

使用下面的脚本,您可以轻松地调整php.ini中的值。每次只需要更新前4行。

请确保您的sed命令支持-i选项。

#!/usr/bin/env bash

upload_max_filesize=240M
post_max_size=50M
max_execution_time=100
max_input_time=223

for key in upload_max_filesize post_max_size max_execution_time max_input_time
do
 sed -i "s/^\($key\).*/\1 $(eval echo = \${$key})/" php.ini
done

1
请提供更多的文字。很多人不想只是复制粘贴而不理解。请问如何理解这个代码:s/^\($key\).*/\1 $(eval echo \${$key})/ - Adib Aroui
1
真的很希望能够理解这是如何工作的。 - MikeVelazco
感谢 @BMW。在我的情况下,我执行了 sudo sed -i "s/^\($key\).*/\1 $(eval echo \${$key})/" /etc/php5/apache2/php.ini - Visualise
2
在我的情况下,我还添加了一个等号以获得正确的php.ini语法:sudo sed -i "s/^\($key\).*/\1 = $(eval echo \${$key})/" /etc/php5/apache2/php.ini - Visualise
1
使用带有后缀的sed -i创建备份文件以确保安全:sed -i.bak "s/^\($key\).*/\1 $(eval echo \${$key})/" php.ini 将创建php.ini.bak。 - Mike
如何添加 date.timezone?名称中有一个点。 - Basit

3

有一个用于此目的的 shell 脚本 https://github.com/StanAngeloff/vagrant-shell-scripts#php

php-settings-update(name, value)

Update a PHP setting value. This function will look for all php.ini files in /etc. For each file, a conf.d directory would be created in the parent directory (if one doesn't already exist) and inside a file specifying the setting name/value will be placed.

Example (create a default timezone):

php-settings-update 'date.timezone' 'Europe/London'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接