mirazmac/php-requirements-checker

一个快速库,用于将当前环境与一组定义的依赖项进行对比检查。它支持检查PHP版本、操作系统、扩展、PHP INI值、函数、类、Apache模块和本地文件和文件夹。

0.2 2021-11-05 17:02 UTC

This package is auto-updated.

Last update: 2024-09-21 09:45:33 UTC


README

PHP Requirements Checker

PHP Requirements Checker

一个用于将当前环境与一组定义的依赖项进行对比检查的PHP库。目前它支持检查PHP版本、操作系统、扩展、php.ini值、函数、类、Apache模块和本地文件和文件夹。

通过composer安装

composer require mirazmac/php-requirements-checker

手动安装

下载最新版本。解压并在您的代码中require src/Checker.php。但强烈建议使用Composer

require 'src/Checker.php';

用法

use MirazMac\Requirements\Checker;

$checker = new Checker;

// Define requirements
$checker->requirePhpVersion('>=5.6')
        ->requirePhpExtensions(['ffmpeg', 'mbstring'])
        ->requireFunctions(['random_bytes'])
        ->requireFile('../composer.json', Checker::CHECK_FILE_EXISTS)
        ->requireDirectory('../src', Checker::CHECK_IS_READABLE)
        ->requireIniValues([
            'allow_url_fopen' => true,
            'short_open_tag' => true,
            'memory_limit'  => '>=64M',
        ]);

// Runs the check and returns parsed requirements as an array
// Contains parsed requirements with state of the current values
// and their comparison result
$output = $checker->check();

// Should be called after running check() to see if requirements has met or not
$satisfied = $checker->isSatisfied();

if ($satisfied) {
    echo "Requirements are met.";
} else {
    echo join(', ', $checker->getErrors());
}

支持的依赖项检查

每个支持的依赖项检查都以单词 require 开头。它们返回类实例,这意味着它们是可链的。以下是支持的检查

requirePhpVersion(string $version);

您可以使用此方法检查当前PHP版本是否与您期望的版本匹配。参数 $version 应该是一个包含您期望的PHP版本的字符串。可以在字符串的开头添加比较运算符。

$checker->requirePhpVersion('7.0.0');

// Note the comparison operator
// Supports comparison operators: <, >, =, >=
$checker->requirePhpVersion('>=7.0.0');

requireOS(string $os);

您可以使用此方法检查当前操作系统是否与您期望的操作系统匹配。参数 $os 必须具有以下值之一: Checker::OS_UNIXChecker::OS_DOS

$checker->requireOS(Checker::OS_UNIX);

requireIniValues(array $values)

使用此方法验证一组php.ini配置值,并与您提供的值进行比较。参数 $values 应该是一个数组,键 => 值形式,其中键包含php.ini配置变量,值应该是期望的值。可以在值的非常开始添加比较运算符。为了简单和整洁,请使用 boolean 而不是使用 On/1/Off/0 进行检查。

$checker->requireIniValues([
    // Will check if file_uploads is enabled or not
    // Notice the usage of boolean instead of On/Off/1/0
    'file_uploads' => true,

    // Note the comparison operator > before the desired value
    // This means the library will check if post_max_size is greater than 2M or not
    'post_max_size' => '>2M',

    // Set a value to `NULL` to just skip the check for that value
    // Useful when you don't wanna compare but want to fetch the
    // current value on the parsed requirements array
    'safe_mode'   => null,
]);

requirePhpExtensions(array $extensions)

确保提供的扩展已加载。参数 $extenstions 应该是一个包含扩展名称的数组。

$checker->requirePhpExtensions([
    'openssl', 'mbstring', 'curl'
]);

requireFunctions(array $functions)

确保提供的函数已加载。参数 $functions 应该是一个包含函数名称的数组。

$checker->requireFunctions([
    'apcu_fetch', 'mb_substr', 'curl_init'
]);

requireClasses(array $classes)

确保提供的类已加载。参数 $classes 应该是一个包含类名称的数组(使用命名空间或全局命名空间)。

$checker->requireClasses([
    'PDO', 'finfo', 'stdClass'
]);

requireApacheModules(array $modules)

确保提供的模块已加载。参数 $modules 应该是一个包含模块名称的数组。注意:此检查仅适用于当前服务器是Apache的情况。

$checker->requireApacheModules([
    'mod_rewrite', 'mod_mime'
]);

requireFile(string $path, string $check = self::CHECK_FILE_EXISTS)

用于检查特定文件和目录的权限和存在性。参数 $path 应该是文件或目录的路径。参数 $check 是要在路径上执行检查的检查名称。支持的值包括

  • Checker::CHECK_IS_FILE - 在路径上运行 is_file()

  • Checker::CHECK_IS_DIR 在路径上运行 is_dir()

  • Checker::CHECK_IS_READABLE 在路径上运行 is_readable()

  • Checker::CHECK_IS_WRITABLE 在路径上运行 is_writable()

  • Checker::CHECK_FILE_EXISTS 在路径上运行 file_exists()

注意:requireDirectory() 是此方法的别名。

$checker->requireFile('app/config.ini', Checker::CHECK_IS_FILE)
        ->requireFile('app/cache', Checker::CHECK_IS_WRITABLE);
        ->requireDirectory('app/cache', Checker::CHECK_IS_DIR);

待办事项

  • 编写测试
  • 编写扩展文档