Re: Unknown entity changing ini settings in Unknown file on line 0
| From: | Michael Bredthauer | 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