'PHP version',
        'mandatory' => true,
        'condition' => version_compare(PHP_VERSION, '5.4.0', '>='),
        'by' => 'Yii Framework',
        'memo' => 'PHP 5.4.0 or higher is required.',
    ),
    array(
        'name' => 'Reflection extension',
        'mandatory' => true,
        'condition' => class_exists('Reflection', false),
        'by' => 'Yii Framework',
    ),
    array(
        'name' => 'PCRE extension',
        'mandatory' => true,
        'condition' => extension_loaded('pcre'),
        'by' => 'Yii Framework',
    ),
    array(
        'name' => 'SPL extension',
        'mandatory' => true,
        'condition' => extension_loaded('SPL'),
        'by' => 'Yii Framework',
    ),
    array(
        'name' => 'Ctype extension',
        'mandatory' => true,
        'condition' => extension_loaded('ctype'),
        'by' => 'Yii Framework'
    ),
    array(
        'name' => 'MBString extension',
        'mandatory' => true,
        'condition' => extension_loaded('mbstring'),
        'by' => 'Multibyte string processing',
        'memo' => 'Required for multibyte encoding string processing.'
    ),
    array(
        'name' => 'OpenSSL extension',
        'mandatory' => false,
        'condition' => extension_loaded('openssl'),
        'by' => 'Security Component',
        'memo' => 'Required by encrypt and decrypt methods.'
    ),
    array(
        'name' => 'Intl extension',
        'mandatory' => false,
        'condition' => $this->checkPhpExtensionVersion('intl', '1.0.2', '>='),
        'by' => 'Internationalization support',
        'memo' => 'PHP Intl extension 1.0.2 or higher is required when you want to use advanced parameters formatting
        in Yii::t(), non-latin languages with Inflector::slug(),
        IDN-feature of
        EmailValidator or UrlValidator or the yii\i18n\Formatter class.'
    ),
    array(
        'name' => 'ICU version',
        'mandatory' => false,
        'condition' => defined('INTL_ICU_VERSION') && version_compare(INTL_ICU_VERSION, '49', '>='),
        'by' => 'Internationalization support',
        'memo' => 'ICU 49.0 or higher is required when you want to use # placeholder in plural rules
        (for example, plural in
        
        Formatter::asRelativeTime()) in the yii\i18n\Formatter class. Your current ICU version is ' .
        (defined('INTL_ICU_VERSION') ? INTL_ICU_VERSION : '(ICU is missing)') . '.'
    ),
    array(
        'name' => 'ICU Data version',
        'mandatory' => false,
        'condition' => defined('INTL_ICU_DATA_VERSION') && version_compare(INTL_ICU_DATA_VERSION, '49.1', '>='),
        'by' => 'Internationalization support',
        'memo' => 'ICU Data 49.1 or higher is required when you want to use # placeholder in plural rules
        (for example, plural in
        
        Formatter::asRelativeTime()) in the yii\i18n\Formatter class. Your current ICU Data version is ' .
        (defined('INTL_ICU_DATA_VERSION') ? INTL_ICU_DATA_VERSION : '(ICU Data is missing)') . '.'
    ),
    array(
        'name' => 'Fileinfo extension',
        'mandatory' => false,
        'condition' => extension_loaded('fileinfo'),
        'by' => 'File Information',
        'memo' => 'Required for files upload to detect correct file mime-types.'
    ),
    array(
        'name' => 'DOM extension',
        'mandatory' => false,
        'condition' => extension_loaded('dom'),
        'by' => 'Document Object Model',
        'memo' => 'Required for REST API to send XML responses via yii\web\XmlResponseFormatter.'
    ),
    array(
        'name' => 'IPv6 support',
        'mandatory' => false,
        'condition' => strlen(@inet_pton('2001:db8::1')) === 16,
        'by' => 'IPv6 expansion in IpValidator',
        'memo' => 'When IpValidator::expandIPv6
        property is set to true, PHP must support IPv6 protocol stack. Currently PHP constant AF_INET6 is not defined
        and IPv6 is probably unsupported.'
    )
);