Como alterar programaticamente os valores do php.ini via shell scripts?

4

Basicamente, estou tentando configurar um script de shell que me permite autoconfigurar alguns parâmetros em meus novos servidores

Em particular, gostaria de definir, em php.ini

error_log = /var/log/php_errors.log error_reporting = E_ALL & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED

No meu script bash eu tenho isto:

ERROR_REPORTING="error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED"
ERROR_LOG="/var/log/php_errors.log"

#CREATE LOG FILE 
sed -i 's/error_reporting = .*/error_reporting = '${ERROR_REPORTING}'/' /etc/php.ini
touch $ERROR_LOG
chown apache:apache $ERROR_LOG
#The ; in the next line is because the line is commented by default on RHEL5
sed -i 's/;error_log = .*/error_log = '${ERROR_LOG}'/' /etc/php.ini

No entanto, isso parece não funcionar e o erro não é óbvio para mim ... alguém poderia corrigir o meu erro?

    
por Keeper 11.12.2010 / 21:08

2 respostas

5

Você precisa alterar as aspas simples mais externas para aspas duplas e remover as aspas simples ao redor dos nomes das variáveis.

ERROR_REPORTING="E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED"
ERROR_LOG="/var/log/php_errors.log"

#CREATE LOG FILE 
sed -i "s/error_reporting = .*/error_reporting = ${ERROR_REPORTING}/" /etc/php.ini
touch $ERROR_LOG
chown apache:apache $ERROR_LOG
#The ; in the next line is because the line is commented by default on RHEL5
sed -i "s/;error_log = .*/error_log = ${ERROR_LOG}/" /etc/php.ini

Note que eu também alterei a primeira variável e o comando sed relacionado, de modo que fique paralelo com o outro conjunto.

Estou assumindo que a mensagem de erro que você está recebendo é o comando "não terminado".

    
por 11.12.2010 / 22:13
0

sed -i requer um argumento que é usado como sufixo para o arquivo de backup criado.

Exemplo: sed -i .bak 's/old/new/' testfile criará um backup testfile.bak antes de editar o original no lugar. Seu comando está tomando a seqüência de comando como o sufixo de backup (e, naturalmente, falhando).

Eu também usaria aspas duplas na string de comando. Isso evita que você tenha que mexer com quoutes extras ao redor da expansão da variável.

    
por 11.12.2010 / 22:15

Tags