Re: How to debug "Unknown: Headers already sent"?
[email protected] (AllenJB)
| Newsgroups | php.general |
|---|---|
| Message-ID | <[email protected]> |
On 06/01/2022 17:13, Jānis Elmeris wrote: > How can I try debugging the "Unknown: Headers already sent. You cannot > change the session module's ini settings at this time in Unknown on > line 0" warning, when PHP is not giving any more details except that > it happened (no info on what's trying to send the headers or where the > output had started). > > This warning happens from time to time only. (In my case, it happens > when I browse a Woocommerce store. It has happened in the local dev > environment when I click on a product, when I click on adding product > to the cart, when I click to checkout. But it happens rarely. Mostly, > all the requests are processed all right, no PHP warnings.) > > Almost everything that I found about "headers already sent" on the > Internet, refers to the cases when the PHP code is written in a way > that outputs some content before sending the headers, in which case > the PHP gives a reference to the PHP code that's in some way related > to the error. But the "unknown" cases are different. > > I found that this error may be caused by repeatedly loading the same > PHP extensions, or by some PHP extension working incorrectly. For > example, "zlib" extension has had such problem when executing > "ob_gzhandler". > > I looked at the PHP configuration and didn't see an extension being > loaded more than once. Regarding "ob_gzhandler", I found only one > place in the Wordpress code using it, and added a log there. Then I > got a headers already sent warning message, but the "ob_gzhandler" had > not been used in that request. > > So, how could this warning be tracked down? Can I use XDebug somehow > to do it? > > I'm using PHP 7.4 FPM. > > Regards, > Janis The error message is specifically complaining about ini settings being set. I would check the code for any calls to ini_set(), specifically that are modifying ini settings relating to sessions (which all start with 'session.' - see https://www.php.net/manual/en/session.configuration.php ). If you can then trace when / where this code is called, this might help you work out what's going on. When the issue does occur, try to note down what you were doing when it happened. What were the last few actions you did? These may help you to work out how to reproduce the issue. As you appear to be using WooCommerce, I would try their support forums / chat as they may know of issues specific to that application or any popular plugins / extensions: https://developer.woocommerce.com/ You might also want to try forums / chat for WordPress as WooCommerce is built on that. You may also want to check all your plugins are up-to-date, look for any which haven't been updated by their developers in a long time and disable any which aren't being used.