Re: How to debug "Unknown: Headers already sent"?
| From: | Negin Nickparsa | Date: | Tue, 08 Feb 2022 04:34:14 +0000 |
| Subject: | Re: How to debug "Unknown: Headers already sent"? | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-327902@lists.php.net to get a copy of this message | ||
for me that I use Magento, it is pretty easy we would use a
controller specifically the one that is sending the requests to the client,
then do a backtrace and log the backtrace and see where in the file that
echo culprit is, however for your case I do not know with pure PHP but
maybe try to debug where you are sending the HTTP requests whatever
platform you are using.
Negin
On Fri, Jan 7, 2022 at 4:13 AM Jānis Elmeris <janis.elmeris@lv.lv> wrote:
> Thank you for the reply!
>
> I added error_logs before all the ini_sets I could find. When I browsed
> the Woocommerce, I got the error three times in about 10 minutes. Looking
> at the error log, it seemed that one time the error occurred right before
> one specific ini_set call, but the two other cases didn't have explicit
> ini_set calls in the code around the time the "Unknown: Headers already
> sent." error appeared. So, I guess that the first one was just a
> coincidence.
>
> I'm somehow not too hopeful of finding the problem in the PHP code seeing
> as PHP engine itself does not know which PHP code file causes the problem..
> So, I suppose, the problem should be on some other level, shouldn't it?
>
> I saw someone on the Internet mentioning XDebug as a way to debug
> something like this but gave no details. Would you have any idea on how to
> use XDebug for such cases?
>
> Janis
>
> ------------------------------
> *No:* AllenJB <php.lists@allenjb.me.uk>
> *Nosūtīts:* ceturtdiena, 2022. gada 6. janvāris 21:28
> *Kam:* php-general@lists.php.net <php-general@lists.php.net>
> *Tēma:* Re: How to debug "Unknown: Headers already sent"?
>
>
>
> 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.
>