# Cakephp4 debug before write session

**URL:** <https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945>\
**Category:** Uncategorized\
**Created:** [June 15, 2020, 3:37am UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945 "2020-06-15T03:37:28Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![oneforalls](https://avatars.discourse-cdn.com/v4/letter/o/ac91a4/32.png) [@oneforalls](https://discourse.cakephp.org/u/oneforalls)\
**Post date:** [June 15, 2020, 3:37am UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/1 "2020-06-15T03:37:28Z")

</div>

1. create clean project

2. edit PagesController.php line 48-49

 ![Capture1](https://canada1.discourse-cdn.com/flex029/uploads/cakephp/original/2X/b/b5d8dc0d7b195c6d3c4cec027d039d5fb6681833.png)

---

<div class="post-metadata">

**Author:** ![Zuluru](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/zuluru/32/1230_2.png) [@Zuluru](https://discourse.cakephp.org/u/Zuluru)\
**Post date:** [June 15, 2020, 3:33pm UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/2 "2020-06-15T15:33:27Z")

</div>

The `write` function wants to know the key _and value_ that you’re trying to write. You’re only providing a key.

---

<div class="post-metadata">

**Author:** ![oneforalls](https://avatars.discourse-cdn.com/v4/letter/o/ac91a4/32.png) [@oneforalls](https://discourse.cakephp.org/u/oneforalls)\
**Post date:** [June 16, 2020, 3:11am UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/3 "2020-06-16T03:11:31Z")

</div>

cakephp: 4.0.8  
ref: vendor/cakephp/cakephp/src/Http/Session.php line 480  
public function write($name, $value = null): void

this case no problem, please read my error message

---

<div class="post-metadata">

**Author:** ![Zuluru](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/zuluru/32/1230_2.png) [@Zuluru](https://discourse.cakephp.org/u/Zuluru)\
**Post date:** [June 16, 2020, 3:20am UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/4 "2020-06-16T03:20:22Z")

</div>

Looking at the implementation of `Session.php`, the first parameter to the `_overwrite` function (as specified by your error message) is `$_SESSION`. If that’s not an array, then I guess the session hasn’t been initialized at all in your application before this point?

---

<div class="post-metadata">

**Author:** ![oneforalls](https://avatars.discourse-cdn.com/v4/letter/o/ac91a4/32.png) [@oneforalls](https://discourse.cakephp.org/u/oneforalls)\
**Post date:** [June 16, 2020, 9:37am UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/5 "2020-06-16T09:37:04Z")

</div>

yes, this case have return false before session\_start at  
Session.php  
public function start()  
…  
…  
if (ini\_get(‘session.use\_cookies’) && headers\_sent()) {  
return false;  
}

is normal?

---

<div class="post-metadata">

**Author:** ![Zuluru](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/zuluru/32/1230_2.png) [@Zuluru](https://discourse.cakephp.org/u/Zuluru)\
**Post date:** [June 16, 2020, 2:53pm UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/6 "2020-06-16T14:53:08Z")

</div>

I wouldn’t think that’s normal. Do you have something generating output, maybe some debug thing, before this is called? Is the ini file set up right? Are permissions right on the file where sessions are saved? Or if you’re using database sessions, have you added the table?

---

<div class="post-metadata">

**Author:** ![oneforalls](https://avatars.discourse-cdn.com/v4/letter/o/ac91a4/32.png) [@oneforalls](https://discourse.cakephp.org/u/oneforalls)\
**Post date:** [June 17, 2020, 3:50am UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/7 "2020-06-17T03:50:52Z")

</div>

i compare between cakephp3 and cakephp4 on the same system and environment.  
maybe cakephp4 very strict?

thank.

---

<div class="post-metadata">

**Author:** ![Zuluru](https://yyz1.discourse-cdn.com/flex029/user_avatar/discourse.cakephp.org/zuluru/32/1230_2.png) [@Zuluru](https://discourse.cakephp.org/u/Zuluru)\
**Post date:** [June 17, 2020, 4:15am UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/8 "2020-06-17T04:15:02Z")

</div>

Have you looked at the migration notes for v4? There are a lot of things that have changed, this might be one of them.

---

<div class="post-metadata">

**Author:** ![gludie](https://avatars.discourse-cdn.com/v4/letter/g/6de8d8/32.png) [@gludie](https://discourse.cakephp.org/u/gludie)\
**Post date:** [February 5, 2023, 10:34am UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/9 "2023-02-05T10:34:50Z")

</div>

Hi, had the same issue after migrating to 4.4 (and php7.4 to 8.2).  
for me it was the http / https topic on local env, so I added the ini setting in app.php.

```auto
   'Session' => [
        'defaults' => 'php',
        'ini' => [
        'session.cookie_secure' => false
        ]
    ],

```

see also cake docs 😉 (Sessions)

---

<div class="post-metadata">

**Author:** ![Dett](https://avatars.discourse-cdn.com/v4/letter/d/e95f7d/32.png) [@Dett](https://discourse.cakephp.org/u/Dett)\
**Post date:** [February 28, 2023, 8:54pm UTC](https://discourse.cakephp.org/t/cakephp4-debug-before-write-session/7945/10 "2023-02-28T20:54:37Z")

</div>

I’m running into the same issue, and removing the SSL requirement (session.cookie\_secure) is not an option for us
