From cb8587cdade3cdbe00b8d6d2488458a2b6c0a592 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 1 Apr 2016 12:31:07 +0100 Subject: [PATCH] Add COMPOSER_DISABLE_ROOT_WARN env var and skip root warning on self-update command as well, refs #5119 --- doc/03-cli.md | 6 ++++++ src/Composer/Console/Application.php | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/doc/03-cli.md b/doc/03-cli.md index a4f7f1f48..120def425 100644 --- a/doc/03-cli.md +++ b/doc/03-cli.md @@ -794,4 +794,10 @@ If set to 1, this env var will make Composer behave as if you passed the If set to 1, this env disables the warning about having xdebug enabled. +### COMPOSER_DISABLE_ROOT_WARN + +If set to 1, this env disables the warning about running commands as root. It also +disables automatic clearing of sudo sessions, so you should really only set this +if you use Composer as root at all times like in docker containers. + ← [Libraries](02-libraries.md) | [Schema](04-schema.md) → diff --git a/src/Composer/Console/Application.php b/src/Composer/Console/Application.php index c7edeef4a..927d34410 100644 --- a/src/Composer/Console/Application.php +++ b/src/Composer/Console/Application.php @@ -133,9 +133,11 @@ class Application extends BaseApplication $input->setInteractive(false); } - if (!Platform::isWindows() && function_exists('exec')) { + if (!Platform::isWindows() && function_exists('exec') && !getenv('COMPOSER_DISABLE_ROOT_WARN')) { if (function_exists('posix_getuid') && posix_getuid() === 0) { - $io->writeError('Running composer as root is highly discouraged as packages, plugins and scripts cannot always be trusted'); + if ($commandName !== 'self-update' && $commandName !== 'selfupdate') { + $io->writeError('Running composer as root is highly discouraged as packages, plugins and scripts cannot always be trusted'); + } if ($uid = getenv('SUDO_UID')) { // Silently clobber any sudo credentials on the invoking user to avoid privilege escalations later on // ref. https://github.com/composer/composer/issues/5119