FAQ
Hi all!

Are there any objections if I disable E_DEPRECATED notice in dl() for FPM SAPI?
The notice is already disabled for CGI/FastCGI, CLI and Embed SAPIs.
I believe there's no reason for this notice in case of FPM, too.

Patch: http://dev.daylessday.org/diff/fpm_dl_notice.diff

--
Wbr,
Antony Dovgal
---
http://pinba.org - realtime statistics for PHP

Search Discussions

  • Johannes Schlüter at Jan 17, 2011 at 6:19 pm

    On Fri, 2011-01-14 at 17:15 +0300, Antony Dovgal wrote:
    Hi all!

    Are there any objections if I disable E_DEPRECATED notice in dl() for FPM SAPI?
    The notice is already disabled for CGI/FastCGI, CLI and Embed SAPIs.
    I believe there's no reason for this notice in case of FPM, too.

    Patch: http://dev.daylessday.org/diff/fpm_dl_notice.diff
    I think it can be quite dangerous if you have extensions living shorter
    than the PHP process. Not only might dlclose() cause some leaks but
    there are a few extensions playing with function pointers or opcode
    handlers which aren't properly reset so a following request might try to
    jump to invalid memory.

    Additionally there's no restriction on this once safe_mode is gone, so
    anybody could load any C extension - while that can be fixed by
    advertising disable_function=dl


    johannes
  • Antony Dovgal at Jan 18, 2011 at 8:00 am

    On 01/17/2011 09:19 PM, Johannes Schlüter wrote:
    I think it can be quite dangerous if you have extensions living shorter
    than the PHP process. Not only might dlclose() cause some leaks but
    there are a few extensions playing with function pointers or opcode
    handlers which aren't properly reset so a following request might try to
    jump to invalid memory.
    dlclose()? I can assure you I'm not going to call dlclose() on each request shutdown.
    ****
    Yes, that means once an extension is loaded it'll stay till the death of this particular child process).
    But it does work here for the last 5 or 6 years this way and this is indeed what I want.
    ****

    TBH I'm not even sure dlclose() is called at all since I wasn't able to track
    this call down through all the handlers, destructors and so on in 5 min I spent on this..
    Additionally there's no restriction on this once safe_mode is gone, so
    anybody could load any C extension - while that can be fixed by
    advertising disable_function=dl
    That's right, disabling it is not a problem.

    --
    Wbr,
    Antony Dovgal
    ---
    http://pinba.org - realtime statistics for PHP
  • Johannes Schlüter at Jan 18, 2011 at 9:46 am

    On Tue, 2011-01-18 at 11:00 +0300, Antony Dovgal wrote:
    On 01/17/2011 09:19 PM, Johannes Schlüter wrote:
    I think it can be quite dangerous if you have extensions living shorter
    than the PHP process. Not only might dlclose() cause some leaks but
    there are a few extensions playing with function pointers or opcode
    handlers which aren't properly reset so a following request might try to
    jump to invalid memory.
    dlclose()? I can assure you I'm not going to call dlclose() on each request shutdown.
    ****
    Yes, that means once an extension is loaded it'll stay till the death of this particular child process).
    But it does work here for the last 5 or 6 years this way and this is indeed what I want.
    ****

    TBH I'm not even sure dlclose() is called at all since I wasn't able to track
    this call down through all the handlers, destructors and so on in 5 min I spent on this..

    module_destructor() calls it and expected it to be hit on rshutdown,
    else has really weird behavior - for some processes an extension would
    be loaded, for others not which results in non-deterministic behavior
    for the outside.

    http://lxr.php.net/opengrok/xref/PHP_5_3/Zend/zend_API.c#2120

    johannes
  • Derick Rethans at Jan 18, 2011 at 10:07 am

    On Fri, 14 Jan 2011, Antony Dovgal wrote:

    Are there any objections if I disable E_DEPRECATED notice in dl() for FPM SAPI?
    The notice is already disabled for CGI/FastCGI, CLI and Embed SAPIs.
    I believe there's no reason for this notice in case of FPM, too.
    IMO, it should be disabled in fastcgi too. Ages ago we came to the
    conclusion it was dangerous/annoying/broken to have dl() work with
    processes that run multiple-requests.

    cheers,
    Derick

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-internals @
categoriesphp
postedJan 14, '11 at 2:15p
activeJan 18, '11 at 10:07a
posts5
users3
websitephp.net

People

Translate

site design / logo © 2022 Grokbase