CodeIgniter 4:带有多个 public 文件夹的火花

CodeIgniter 4 : spark with multi public folders

我正在使用新的 CodeIgniter 4 开发网站(我使用的是 CodeIgniter 3),但我遇到了问题:

我在 1 个 CodeIgniter 系统上使用多个 public 文件夹来 运行 多个网站,例如:

public/site1/index.php
public/site2/index.php

等等

在 index.php(来自 CI4)中,我刚刚添加了以下行:

define('PUBFOLDER', basename(__DIR__));

并在 app/Config/Events.php 中添加了以下代码:

Events::on('pre_system', function () {
    $configs = Database::connect(PUBFOLDER)
                    ->table('option')
                    ->get()
                    ->getResult();

    foreach($configs as $config)
    {
        config('App')->{$config->option_name} = $config->option_value;
    }
});

(在这里找到:https://github.com/codeigniter4/CodeIgniter4/issues/1661#issuecomment-453723931

当我导航时效果很好。

但现在我想使用 CLI 和 "spark",当我执行以下操作时:

php spark

我有一个逻辑错误:

Type:        ErrorException
Message:     Use of undefined constant PUBFOLDER - assumed 'PUBFOLDER' (this will throw an Error in a future version of PHP)
Filename:    /home/www/ci4/www/app/Config/Events.php

那么我怎么才能告诉 spark 我想在 "site1" 中使用它呢?

感谢您的帮助!

只需找到一个解决方案:我已将 "spark" 文件复制到 "spark-site1" 和 "spark-site2"

在这些文件中,我在 PHP 打开标签之后添加了一行,例如:

#!/usr/bin/env php
<?php

define('PUBFOLDER', str_replace('spark-', '', basename(__FILE__)));

并将 FCPATH 定义修改为:

define('FCPATH', __DIR__ . '/public' . DIRECTORY_SEPARATOR . PUBFOLDER . DIRECTORY_SEPARATOR);

有效。