# fully enabling dl() for FPM SAPI

- Thread: https://externals.io/message/51267
- Original archive: https://news-web.php.net/php.internals/51267
- Started by Antony Dovgal on 2011-01-14T14:15:45+00:00
- Messages: 5
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #51267 — Antony Dovgal — 2011-01-14T14:15:45+00:00

URL: https://externals.io/message/51267#51267

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

---

## #51290 — johannes@schlueters.de — 2011-01-17T18:19:27+00:00

URL: https://externals.io/message/51267#51290 · In reply to: #51267

> 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

---

## #51292 — Antony Dovgal — 2011-01-18T08:00:48+00:00

URL: https://externals.io/message/51267#51292 · In reply to: #51290

> 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

---

## #51295 — johannes@schlueters.de — 2011-01-18T09:46:23+00:00

URL: https://externals.io/message/51267#51295 · In reply to: #51292

> 
> > […]
> 
> 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

---

## #51296 — Derick Rethans — 2011-01-18T10:07:29+00:00

URL: https://externals.io/message/51267#51296 · In reply to: #51267

> 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
