Skip to content

Bug: cannot use Session in Config\App #7308

@kenjis

Description

@kenjis
Member

CodeIgniter version: 4.3.2

See #4297 (comment)

--- a/app/Config/App.php
+++ b/app/Config/App.php
@@ -442,4 +442,11 @@ class App extends BaseConfig
      * @see http://www.w3.org/TR/CSP/
      */
     public bool $CSPEnabled = false;
+
+    public function __construct()
+    {
+        parent::__construct();
+
+        session();
+    }
 }
$ php spark
PHP Fatal error:  Uncaught Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '256' frames in /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Factories.php:98
Stack trace:
#0 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Factories.php(98): array_shift(Array)
#1 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Common.php(216): CodeIgniter\Config\Factories::__callStatic('config', Array)
#2 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseConfig.php(62): config('Modules')
#3 /Users/kenji/work/codeigniter/official/CodeIgniter4/app/Config/App.php(448): CodeIgniter\Config\BaseConfig->__construct()
#4 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Factories.php(129): Config\App->__construct()
#5 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Common.php(216): CodeIgniter\Config\Factories::__callStatic('config', Array)
#6 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(644): config('App')
#7 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::session(NULL, false)
#8 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(193): CodeIgniter\Config\BaseService::__callStatic('session', Array)
#9 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(641): CodeIgniter\Config\BaseService::getSharedInstance('session', NULL)
#10 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::session()
#11 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Common.php(988): CodeIgniter\Config\BaseService::__callStatic('session', Array)
#12 /Users/kenji/work/codeigniter/official/CodeIgniter4/app/Config/App.php(450): session()
#13 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Factories.php(129): Config\App->__construct()
#14 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Common.php(216): CodeIgniter\Config\Factories::__callStatic('config', Array)
#15 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(644): config('App')
#16 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::session(NULL, false)
#17 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(193): CodeIgniter\Config\BaseService::__callStatic('session', Array)
#18 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(641): CodeIgniter\Config\BaseService::getSharedInstance('session', NULL)
#19 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::session()
#20 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Common.php(988): CodeIgniter\Config\BaseService::__callStatic('session', Array)
#21 /Users/kenji/work/codeigniter/official/CodeIgniter4/app/Config/App.php(450): session()
#22 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Factories.php(129): Config\App->__construct()
...

Activity

added
bugVerified issues on the current code behavior or pull requests that will fix them
on Feb 26, 2023
kenjis

kenjis commented on Feb 26, 2023

@kenjis
MemberAuthor

#7255 will fixes the infinite loop.
But I get another error:

$ php spark
PHP Fatal error:  Uncaught Error: Undefined constant "Config\ENVIRONMENT" in /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Factories.php:129
Stack trace:
#0 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Common.php(216): CodeIgniter\Config\Factories::__callStatic('config', Array)
#1 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(399): config('Logger')
#2 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::logger(false)
#3 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(193): CodeIgniter\Config\BaseService::__callStatic('logger', Array)
#4 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(396): CodeIgniter\Config\BaseService::getSharedInstance('logger')
#5 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::logger()
#6 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(650): CodeIgniter\Config\BaseService::__callStatic('logger', Array)
#7 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::session(NULL, false)
#8 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(193): CodeIgniter\Config\BaseService::__callStatic('session', Array)
#9 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(647): CodeIgniter\Config\BaseService::getSharedInstance('session', NULL)
#10 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::session()
#11 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Common.php(988): CodeIgniter\Config\BaseService::__callStatic('session', Array)
#12 /Users/kenji/work/codeigniter/official/CodeIgniter4/app/Config/App.php(264): session()
#13 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Factories.php(129): Config\App->__construct()
#14 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Common.php(216): CodeIgniter\Config\Factories::__callStatic('config', Array)
#15 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(148): config('App')
#16 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::codeigniter(NULL, false)
#17 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(193): CodeIgniter\Config\BaseService::__callStatic('codeigniter', Array)
#18 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Services.php(145): CodeIgniter\Config\BaseService::getSharedInstance('codeigniter', NULL)
#19 /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/BaseService.php(252): CodeIgniter\Config\Services::codeigniter()
#20 /Users/kenji/work/codeigniter/official/CodeIgniter4/spark(82): CodeIgniter\Config\BaseService::__callStatic('codeigniter', Array)
#21 {main}
  thrown in /Users/kenji/work/codeigniter/official/CodeIgniter4/system/Config/Factories.php on line 129
changed the title [-]Bug: cannot use session in Config\App[/-] [+]Bug: cannot use Session in Config\App[/+] on Feb 27, 2023
kenjis

kenjis commented on Feb 27, 2023

@kenjis
MemberAuthor

No good. I can't get out of the dependency hell.

The Session depends on a Session driver. This is no problem.
The Session driver creation depends on a Request (AppServices::request()->getIPAddress()).
The IncomingRequest depends on Config\App!

Since IncomingRequest depends on Config\App::$supportedLocales, splitting Config\App does not solve this problem.

removed
bugVerified issues on the current code behavior or pull requests that will fix them
on Oct 24, 2023
kenjis

kenjis commented on Oct 24, 2023

@kenjis
MemberAuthor

Using Session in Config\App is a misuse. This means using personalized values in Config.
But Config values should be the values for the system, not for a site visitor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @kenjis

        Issue actions

          Bug: cannot use Session in Config\App · Issue #7308 · codeigniter4/CodeIgniter4