Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bug: cannot use Session in Config\App #7308

Closed
kenjis opened this issue Feb 26, 2023 · 3 comments
Closed

Bug: cannot use Session in Config\App #7308

kenjis opened this issue Feb 26, 2023 · 3 comments

Comments

@kenjis
Copy link
Member

kenjis commented Feb 26, 2023

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()
...
@kenjis kenjis added the bug Verified issues on the current code behavior or pull requests that will fix them label Feb 26, 2023
@kenjis
Copy link
Member Author

kenjis commented Feb 26, 2023

#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

@kenjis kenjis changed the title Bug: cannot use session in Config\App Bug: cannot use Session in Config\App Feb 27, 2023
@kenjis
Copy link
Member Author

kenjis commented Feb 27, 2023

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.

@kenjis kenjis removed the bug Verified issues on the current code behavior or pull requests that will fix them label Oct 24, 2023
@kenjis
Copy link
Member Author

kenjis commented Oct 24, 2023

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.

@kenjis kenjis closed this as completed Oct 24, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant