19 declare(strict_types=1);
    34     public const PHP = 
'php';
    38         return "delivery_method";
    47             return new Setup\Artifact\ArrayArtifact([
    48                 self::SETTINGS => self::XSENDFILE
    52         return new Setup\Artifact\ArrayArtifact([
    53             self::SETTINGS => self::PHP
    59         if (function_exists(
'apache_get_modules') && in_array(
'mod_xsendfile', apache_get_modules(), 
true)) {
    64             $command_exists = shell_exec(
"which apache2ctl");
    65             if ($command_exists === null || empty($command_exists)) {
    69             $loaded_modules = 
array_map(
static function ($module) {
    70                 return explode(
" ", trim($module))[0] ?? 
"";
    71             }, explode(
"\n", shell_exec(
"apache2ctl -M 2>/dev/null") ?? 
''));
    75         if (in_array(
'xsendfile_module', $loaded_modules, 
true)) {
 This is an objective to build some artifact. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
An environment holds resources to be used in the setup process. 
 
An artifact is some file that is build on demand per installation and is not shipped with the ILIAS s...
 
isApplicable(Setup\Environment $environment)