使用 composer 为 Supervisor 安装 PHP 库

Installing PHP library for Supervisor using composer

我想使用 Supervisor 来管理我的流程。我已经在我的亚马逊 linux 机器上安装了它,并且根据配置文件的基本设置 运行 没问题。

现在,我想动态更改进程。由于每次都需要更改配置文件并重新启动,因此使用 PHP 库来做同样的事情似乎是一个不错的选择。

具体来说,我要通过 SupervisorPHP config to change the configuration dynamically and SupervisorPHP 通过 PHP 联系经理主管。

根据 SupervisorPHP config 的自述文件,我通过 composer 安装了它

composer require supervisorphp/configuration

我复制了示例代码

<?php
    use Supervisor\Configuration\Configuration;
    use Supervisor\Configuration\Section\Supervisord;
    use Supervisor\Configuration\Section\Program;
    use Indigophp\Ini\Rendere;

    $config = new Configuration;
    $renderer = new Renderer;

    $section = new Supervisord(['identifier' => 'supervisor']);
    $config->addSection($section);

    $section = new Program('test', ['command' => 'cat']);
    $config->addSection($section);

    echo $renderer->render($config->toArray());

当我运行这段代码时,我得到以下错误:

PHP Fatal error:  Class 'Supervisor\Configuration\Configuration' not found in test.php on line 7

我也尝试克隆 repo 并单独包含文件,但是它显示其他依赖项的错误。如果我能用这个就好了。

以上代码有2个错误。

第一个错误是你没有使用composer提供的autoloader以便php找到需要的类。为此,只需添加 require __DIR__ . '/vendor/autoload.php';(如果供应商文件夹位于与示例脚本相关的不同路径中,则相应地进行调整)。

第二个错误是 Indigo 的 use 语句php。除了 Renderer 一词中明显的拼写错误外,如果您检查 Indigo 的来源,您会发现它必须是 use Indigo\Ini\Renderer;

所以测试安装的正确代码是:

<?php
require __DIR__ . '/vendor/autoload.php';

use Supervisor\Configuration\Configuration;
use Supervisor\Configuration\Section\Supervisord;
use Supervisor\Configuration\Section\Program;
use Indigo\Ini\Renderer;

$config = new Configuration;
$renderer = new Renderer;

$section = new Supervisord(['identifier' => 'supervisor']);
$config->addSection($section);

$section = new Program('test', ['command' => 'cat']);
$config->addSection($section);

echo $renderer->render($config->toArray());

运行上面的代码,你应该得到如下输出:

[supervisord]
identifier = supervisor

[program:test]
command = cat