intahwebz/configurator

此包已被弃用,不再维护。作者建议使用danack/configurator包。

从PHP、JSON和Yaml数据文件生成配置文件。

1.1.1 2021-07-02 19:36 UTC

This package is auto-updated.

Last update: 2021-07-02 19:39:00 UTC


README

一些简单的工具,用于合理地管理配置数据。这些工具可以安全地共享环境数据。它们不是用来保存“机密”的,例如api/oauth密钥。

  • 配置文件生成器

  • 环境设置生成器

  • 将PHP ini文件转换为PHP-FPM格式

哲学

环境变量需要细粒度控制。虽然它们可以分组为“环境”,但它们需要在每个部署的基础上可配置,而不需要复制大量信息。

它们还需要与应用程序的代码存储在一起,以便易于维护。

此库允许您完成这两件事。所有环境设置都可以以简单的方式存储,然后提取并组合为任意组合。例如,使用'centos,dev'作为环境设置将使用所有的'centos'环境设置,'dev'设置将覆盖任何重复的设置。

不喜阅读说明的人的示例用法

如果您通过Composer安装Configurator,可执行文件将在vendor/bin目录中,并可以使用以下方式运行:

# Generate nginx config file for the centos,dev environment
vendor/bin/configurate -p example/config.php example/config_template/nginx.conf.php autogen/nginx.conf "centos,dev"

# Generate a PHP file that contains a function which returns the current application env settings
vendor/bin/genenv -p example/config.php example/envRequired.php autogen/appEnv.php "centos,dev"

# Convert a PHP ini file to be in the PHP-FPM format
vendor/bin/fpmconv autogen/php.ini autogen/php.fpm.ini

配置文件生成器

此工具允许您从基于PHP的模板和存储不同环境设置的PHP数据文件生成配置文件。

源配置模板文件

<?php

$config = <<< END

server {

    access_log  ${'nginx.log.directory'}/project.access.log requestTime;    
    error_log  ${'nginx.log.directory'}/project.error.log;
    root ${'project.root.directory'}/public;
}

END;

return $config;

存储任意环境数据的文件

<?php

$centos = [
    'nginx.log.directory' => '/var/log/nginx', 
    'project.root.directory' => '/home/project',
];

$windows = [
    'nginx.log.directory' => 'c:/nginx', 
    'project.root.directory' => 'c:/documents/project',
];

$john = [
    'project.root.directory' => '/home/workdir/project',
]

运行命令configurate data/nginx.conf.php var/generated/nginx.conf centos,john -p settings.php将生成文件

    access_log  /var/log/nginx/project.access.log requestTime;    
    error_log  /var/log/nginx/project.error.log;
    root /home/workdir/project/public;

语法

configurate [-p|--phpsettings="..."] [-j|--jssettings="..."] 输入 输出 环境

-p 逗号分隔的PHP数据文件列表。每个都需要返回一个数据数组。
-j 逗号分隔的JSON数据文件列表。
-y 逗号分隔的YAML文件列表。
输入 输入模板文件。
输出 要写入的输出文件。
环境 逗号分隔的应应用的环境设置列表。

生成环境设置

一个工具,它将解析应用程序所需的环境设置和数据文件,这些数据文件存储了所有环境设置,并生成一个包含函数的文件,该函数返回此应用程序所需的env设置数组。

给定此文件列出了应用程序所需的环境设置

<?php

use ExampleApp\AppConfig;

$env = [
    AppConfig::CACHING_SETTING,
    AppConfig::SCRIPT_PACKING,
    AppConfig::FILE_STORAGE
];

return $env;

以及一个存储各种环境设置数据的文件

$dev = [
    AppConfig::SCRIPT_PACKING => true,
    AppConfig::CACHING_SETTING => 'caching.disable',
];

$live = [
    AppConfig::SCRIPT_PACKING => true,
    AppConfig::CACHING_SETTING => 'caching.time'
]; 

// Anyone doing UX testing needs to have the scripts packed together
// to avoid slow UI responses
$uxtesting = [AppConfig::SCRIPT_PACKING => true];

运行命令bin/genenv -p environment/config.php environment/envRequired.php env.php dev,uxtesting将生成一个包含所有请求的env设置的文件

<?php

function getAppEnv() {
    static $env = [
        'caching.setting' => 'caching.disable',
        'script.packing' => 'true',
    ];

    return $env;
}

键是实际的字符串,而不是应用程序中使用的常量,以便可以在应用程序外部使用设置。

语法

genenv [-p|--phpsettings="..."] [-j|--jssettings="..."] 输入 输出 环境

-p 逗号分隔的PHP数据文件列表。每个都需要返回一个数据数组。
-j 逗号分隔的JSON数据文件列表。
-y 逗号分隔的YAML文件列表。
输入 输入模板文件。
输出 要写入的输出文件。
环境 逗号分隔的应应用的环境设置列表。

将 PHP ini 文件转换为 PHP-FPM 格式

由于某些原因,PHP-FPM 在 PHP-FPM 配置文件中包含池中的 ini 文件时,不使用标准的 PHP 文件格式。配置器这方面的功能将 PHP 风格的 ini 文件转换为 PHP-FPM 所期望的格式

输入 ini 文件

extension=imagick.so
default_charset = "utf-8";
post_max_size = 10M

运行命令 php bin/fpmconv example.php.ini example.phpfpm.ini

将生成此 PHP-FPM ini 文件

php_admin_value[extension] = "imagick.so"
php_admin_value[default_charset] = "utf-8"
php_admin_value[post_max_size] = "10M"