4

При попытке вставить пару строк в конец файла, я получаю разрешение проблемы. Я понимаю, почему я получаю ошибку, но я не могу придумать способ ее устранения. Любая помощь будет оценена.

sudo cat > /etc/php5/apache2/php.ini << EOF
    # extensions
    extension=”memcached.so”
    extension=”apc.so”
EOF

3 ответа3

10

Использование Heredoc, или "добавление в EOF", не является проблемой.

Все перенаправления (включая >) применяются перед выполнением фактической команды. Другими словами, ваша оболочка сначала пытается открыть /etc/php5/apache2/php.ini для записи с использованием вашей учетной записи, а затем запускает совершенно бесполезную sudo cat .

Один из способов обойти это:

sudo bash -c "cat >> /etc/php5/apache2/php.ini" <<EOF

(Вы можете запустить интерактивную оболочку через sudo -s или использовать dd или tee для записи в файл.)


В связанной заметке использование > перезапишет старый php.ini. Используйте >> чтобы добавить.

0

sudo su и тогда у вас есть подходящая оболочка от имени root . Запустите команду без префикса sudo . После этого exit чтобы вернуться из корневой оболочки.

0

Чтобы расширить ответ @grawity, показывая, как использовать tee:

sudo tee /etc/php5/apache2/php.ini >/dev/null <<EOF
    # extensions
    extension=”memcached.so”
    extension=”apc.so”
EOF

или используйте опцию "-a" для добавления вместо перезаписи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .