mirazmac / php-requirements-checker
一个快速库,用于将当前环境与一组定义的依赖项进行对比检查。它支持检查PHP版本、操作系统、扩展、PHP INI值、函数、类、Apache模块和本地文件和文件夹。
Requires
- php: >=5.4
Requires (Dev)
- phpunit/phpunit: ^4
This package is auto-updated.
Last update: 2024-09-21 09:45:33 UTC
README
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_UNIX
、Checker::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);
待办事项
- 编写测试
- 编写扩展文档