CodeIgniter 4: искра с несколькими общедоступными папками

Я разрабатываю веб-сайты с помощью нового CodeIgniter 4 (я использовал CodeIgniter 3), и у меня возникла проблема:

Я использую несколько общедоступных папок для запуска нескольких веб-сайтов в одной системе CodeIgniter, например:

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 и «искру», и когда я делаю:

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

Итак, как я могу сказать искре, что я хочу использовать ее, например, на «сайте 1»?

Спасибо за помощь!


person Guillaume    schedule 04.06.2020    source источник


Ответы (1)


Просто найдите решение: я продублировал файл «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);

Оно работает.

person Guillaume    schedule 04.06.2020