Нажмите файл как sudo

Как я могу прикоснуться к файлу как sudo при использовании [Файловая система Symfony] [1]?

Пока что у меня есть:

$fs = new Filesystem();
$confFile = sprintf('/etc/apache2/sites-available/%s.conf', $input->getArgument('name'));
$fs->touch($confFile);

Но этот код завершается с ошибкой: Permission denied,

[1]: http://symfony.com/doc/current/components/filesystem/introduction.html

2

Решение

Из компонента файловой системы Symfony:

public function touch($files, $time = null, $atime = null)
{
foreach ($this->toIterator($files) as $file) {
$touch = $time ? @touch($file, $time, $atime) : @touch($file);
if (true !== $touch) {
throw new IOException(sprintf('Failed to touch "%s".', $file), 0, null, $file);
}
}
}

Как вы видите, touch() Метод — это просто обёртка вокруг встроенного PHP touch() функция. Если вам нужно запустить контакт с повышенными правами через sudo, вам нужно позвонить по нему напрямую:

shell_exec('sudo touch ' . escapeshellarg($file));
1

Другие решения

вам нужно поменять права на /etc/apache2/sites-available/ добавить доступ на запись для пользователя apache

HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`

sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" /etc/apache2/sites-available/
0

По вопросам рекламы [email protected]