По сути, я пытаюсь настроить сценарий оболочки, который позволяет мне автоматически настраивать некоторые параметры на моих новых серверах.
В частности, я бы хотел установить в php.ini
error_log = /var/log/php_errors.log error_reporting = E_ALL & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED
В моем сценарии bash у меня есть следующее:
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
Однако это, похоже, не работает, и ошибка не очевидна для меня ... Кто-нибудь может исправить мою ошибку?
Вам нужно заменить крайние одинарные кавычки на двойные и удалить одинарные кавычки вокруг имен переменных.
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
Обратите внимание, что я также изменил первую переменную и связанные с ней sed
команда, поэтому она параллельна другому набору.
Я предполагаю, что вы получили сообщение об ошибке "unterminated` s 'command ".
sed -i
требуется аргумент, который используется в качестве суффикса для создаваемого файла резервной копии.
Пример: sed -i .bak 's/old/new/' testfile
создаст резервную копию testfile.bak
перед редактированием оригинала на месте. Ваша команда принимает командную строку в качестве суффикса резервной копии (и, естественно, не работает).
Я бы также использовал двойные кавычки в командной строке. Это избавит вас от необходимости возиться с лишними одиночными кавычками вокруг расширения переменной.