Re: Unknown entity changing ini settings in Unknown file on line 0

From: Date: Sun, 13 Feb 2022 20:21:44 +0000
Subject: Re: Unknown entity changing ini settings in Unknown file on line 0
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-327914@lists.php.net to get a copy of this message
Poop 💩 how do I get off the thread? Sent from my iPhone > On Feb 13, 2022, at 2:40 PM, Dave Holloway <lists@dajoho.com> wrote: > >  >> On 26/04/2019 15:55, Jānis Elmeris wrote: >> Hello! >> >> How do I go about debugging and eventually solving this error message >> I keep getting on my site? >> >>> PHP Warning: Unknown: Headers already sent. You cannot change the session module's >>> ini settings at this time in Unknown on line 0 >> I cannot reliably reproduce it, but it happens several times a day on >> the production environment, and it has also happened on my local >> environment (but far less frequently). >> >> The related access_log entries do not help (at least not >> straightforwardly) – I do not see anything apparently common to all >> the suspicious / related requests. >> I've checked for ini and session related functions used in the code, >> and I couldn't see a problem there. Besides, if there was an explicit >> ini_set, header, session_start or similar problem in the code, the >> error message would be more generous with the trace than just "Unknown >> in Unknown on line 0", right? >> >> I've tried setting "output_buffering = On", which may be reducing the >> amount of warnings (or it may be a coincidence), but they are still >> appearing. >> >> The Nginx and PHP configuration syntax seems to be all right, although >> we may be missing something there. >> >> PHP version is 7.2.17 >> We're using Nginx and PHP-FPM. >> >> The modules are loaded by the /etc/php/7.2/mods-available convention, >> and there seem to be no modules being loaded more than once. >> We also have XDebug module enabled at the moment, but the warning >> appeared also when it was disabled. >> >> Any help would be much appreciated. >> Janis > > > Hi Janis, > > There are several causes, but almost all are caused by some form of output before the first > session_start() or before the first setcookie(). > > > How to debug this: > > 1) Search your entire code for a php end-tag. e.g. ?> Check if there is a space or a line > break after this end tag and if there is, delete it. This isn't too relevant in wordpress > templates. > > 2) Also do the same for php start tags. Search for <?php and check if there are any spaces > before the tag and delete them. > > 3) If you manage to catch a page with the error, look at the generated source-code in your > browser. Don't use the web inspector (use CTRL-U to see the real source-code). Check if there > is junk before the <!DOCTYPE. Any stray php output usually appears before this declaration. > > 4) Try as many states of your application as you can to try and home-in on the error. i.e. if > you're using an online shop, test while logged in, while logged out, with an empty shopping > basket, with an empty shopping basket to try and reproduce the error. > > 5) It could be ANOTHER error message causing the error. i.e. wordpress throws an error for some > reason saying e.g.: "Notice: bla bla." and THIS is then interpreted as output, meaning the > Headers already sent is an error which only occurs in the event of another error. If you can, check > your PHP error logs to see if you can see any previous errors which could be causing this. Notices > and Warnings are usual candidates. > > 6) Reconfigure PHP to only log errors to a file- see if this fixes the problem. > > 7) Register your own error handler (see php.net on how to do this) and log the current URL when > the specific header error occurs. > > > Hope you get it fixed. > > > Regards > > Dave

« previous php.general (#327914) next »