MediaWiki REL1_34
MediaWiki\Shell\Command Class Reference

Class used for executing shell commands. More...

Inheritance diagram for MediaWiki\Shell\Command:

Public Member Functions

 __construct ()
 Don't call directly, instead use Shell::command()
 
 __destruct ()
 Makes sure the programmer didn't forget to execute the command after all.
 
 __toString ()
 Returns the final command line before environment/limiting, etc are applied.
 
 cgroup ( $cgroup)
 Sets cgroup for this command.
 
 environment (array $env)
 Sets environment variables which should be added to the executed command environment.
 
 execute ()
 Executes command.
 
 includeStderr ( $yesno=true)
 Controls whether stderr should be included in stdout, including errors from limit.sh.
 
 input ( $inputString)
 Sends the provided input to the command.
 
 limits (array $limits)
 Sets execution limits.
 
 logStderr ( $yesno=true)
 When enabled, text sent to stderr will be logged with a level of 'error'.
 
 params (... $args)
 Adds parameters to the command.
 
 profileMethod ( $method)
 Sets calling function for profiler.
 
 restrict ( $restrictions)
 Set restrictions for this request, overwriting any previously set restrictions.
 
 unsafeParams (... $args)
 Adds unsafe parameters to the command.
 
 whitelistPaths (array $paths)
 If called, only the files/directories that are whitelisted will be available to the shell command.
 

Protected Member Functions

 buildFinalCommand ( $command)
 String together all the options and build the final command to execute.
 
 hasRestriction ( $restriction)
 Bitfield helper on whether a specific restriction is enabled.
 

Protected Attributes

string $command = ''
 
int $restrictions = 0
 Bitfield with restrictions.
 

Private Attributes

string false $cgroup = false
 
bool $doIncludeStderr = false
 
bool $doLogStderr = false
 
string[] $env = []
 
bool $everExecuted = false
 
string null $inputString
 
array $limits
 
string $method
 

Detailed Description

Class used for executing shell commands.

Since
1.30

Definition at line 36 of file Command.php.

Constructor & Destructor Documentation

◆ __construct()

MediaWiki\Shell\Command::__construct ( )

Don't call directly, instead use Shell::command()

Exceptions
ShellDisabledError

Definition at line 87 of file Command.php.

References MediaWiki\Shell\Shell\isDisabled().

◆ __destruct()

MediaWiki\Shell\Command::__destruct ( )

Makes sure the programmer didn't forget to execute the command after all.

Definition at line 98 of file Command.php.

References MediaWiki\Shell\Command\$command, $context, and MediaWiki\Shell\Command\$method.

Member Function Documentation

◆ __toString()

MediaWiki\Shell\Command::__toString ( )

Returns the final command line before environment/limiting, etc are applied.

Use string conversion only for debugging, don't try to pass this to some other execution medium.

Returns
string

Definition at line 593 of file Command.php.

◆ buildFinalCommand()

MediaWiki\Shell\Command::buildFinalCommand ( $command)
protected

String together all the options and build the final command to execute.

Parameters
string$commandAlready-escaped command to run
Returns
array [ command, whether to use log pipe ]

Reimplemented in MediaWiki\Shell\FirejailCommand.

Definition at line 304 of file Command.php.

References $command, and wfIsWindows().

◆ cgroup()

MediaWiki\Shell\Command::cgroup ( $cgroup)

Sets cgroup for this command.

Parameters
string | false$cgroupAbsolute file path to the cgroup, or false to not use a cgroup
Returns
$this

Definition at line 237 of file Command.php.

◆ environment()

MediaWiki\Shell\Command::environment ( array $env)

Sets environment variables which should be added to the executed command environment.

Parameters
string[]$envarray of variable name => value
Returns
$this

Definition at line 176 of file Command.php.

◆ execute()

MediaWiki\Shell\Command::execute ( )

Executes command.

Afterwards, getExitCode() and getOutput() can be used to access execution results.

Returns
Result
Exceptions
Exception
ProcOpenError
ShellDisabledError

Definition at line 367 of file Command.php.

References $line, $lines, $res, SHELL_MAX_ARG_STRLEN, wfGetCaller(), and wfIsWindows().

◆ hasRestriction()

MediaWiki\Shell\Command::hasRestriction ( $restriction)
protected

Bitfield helper on whether a specific restriction is enabled.

Parameters
int$restriction
Returns
bool

Definition at line 278 of file Command.php.

◆ includeStderr()

MediaWiki\Shell\Command::includeStderr ( $yesno = true)

Controls whether stderr should be included in stdout, including errors from limit.sh.

Default: don't include.

Parameters
bool$yesno
Returns
$this

Definition at line 213 of file Command.php.

◆ input()

MediaWiki\Shell\Command::input ( $inputString)

Sends the provided input to the command.

When set to null (default), the command will use the standard input.

Parameters
string | null$inputString
Returns
$this

Definition at line 200 of file Command.php.

◆ limits()

MediaWiki\Shell\Command::limits ( array $limits)

Sets execution limits.

Parameters
array$limitsAssociative array of limits. Keys (all optional): filesize (for ulimit -f), memory, time, walltime.
Returns
$this

Definition at line 159 of file Command.php.

◆ logStderr()

MediaWiki\Shell\Command::logStderr ( $yesno = true)

When enabled, text sent to stderr will be logged with a level of 'error'.

Parameters
bool$yesno
Returns
$this

Definition at line 225 of file Command.php.

◆ params()

MediaWiki\Shell\Command::params ( $args)

Adds parameters to the command.

All parameters are sanitized via Shell::escape(). Null values are ignored.

Parameters
string|string[]...$args
Returns
$this

Reimplemented in MediaWiki\Shell\FirejailCommand.

Definition at line 118 of file Command.php.

References $args.

◆ profileMethod()

MediaWiki\Shell\Command::profileMethod ( $method)

Sets calling function for profiler.

By default, the caller for execute() will be used.

Parameters
string$method
Returns
$this

Definition at line 188 of file Command.php.

◆ restrict()

MediaWiki\Shell\Command::restrict ( $restrictions)

Set restrictions for this request, overwriting any previously set restrictions.

Add the "no network" restriction:

$command->restrict( Shell::RESTRICT_DEFAULT | Shell::NO_NETWORK );
$command
Definition cdb.php:65

Allow LocalSettings.php access:

$command->restrict( Shell::RESTRICT_DEFAULT & ~Shell::NO_LOCALSETTINGS );

Disable all restrictions:

$command->restrict( Shell::RESTRICT_NONE );
Since
1.31
Parameters
int$restrictions
Returns
$this

Definition at line 265 of file Command.php.

◆ unsafeParams()

MediaWiki\Shell\Command::unsafeParams ( $args)

Adds unsafe parameters to the command.

These parameters are NOT sanitized in any way. Null values are ignored.

Parameters
string|string[]...$args
Returns
$this

Definition at line 136 of file Command.php.

References $args.

◆ whitelistPaths()

MediaWiki\Shell\Command::whitelistPaths ( array $paths)

If called, only the files/directories that are whitelisted will be available to the shell command.

limit.sh will always be whitelisted

Parameters
string[]$paths
Returns
$this

Reimplemented in MediaWiki\Shell\FirejailCommand.

Definition at line 292 of file Command.php.

Member Data Documentation

◆ $cgroup

string false MediaWiki\Shell\Command::$cgroup = false
private

Definition at line 73 of file Command.php.

◆ $command

string MediaWiki\Shell\Command::$command = ''
protected

Definition at line 40 of file Command.php.

Referenced by MediaWiki\Shell\Command\__destruct().

◆ $doIncludeStderr

bool MediaWiki\Shell\Command::$doIncludeStderr = false
private

Definition at line 64 of file Command.php.

◆ $doLogStderr

bool MediaWiki\Shell\Command::$doLogStderr = false
private

Definition at line 67 of file Command.php.

◆ $env

string [] MediaWiki\Shell\Command::$env = []
private

Definition at line 55 of file Command.php.

◆ $everExecuted

bool MediaWiki\Shell\Command::$everExecuted = false
private

Definition at line 70 of file Command.php.

◆ $inputString

string null MediaWiki\Shell\Command::$inputString
private

Definition at line 61 of file Command.php.

◆ $limits

array MediaWiki\Shell\Command::$limits
private
Initial value:
= [
'time' => 180,
'walltime' => 180,
'memory' => 307200,
'filesize' => 102400,
]

Definition at line 43 of file Command.php.

◆ $method

string MediaWiki\Shell\Command::$method
private

Definition at line 58 of file Command.php.

Referenced by MediaWiki\Shell\Command\__destruct().

◆ $restrictions

int MediaWiki\Shell\Command::$restrictions = 0
protected

Bitfield with restrictions.

Definition at line 80 of file Command.php.


The documentation for this class was generated from the following file: