Use ReflectionFunction to check for a present-but-disabled dl() function instead of manually parsing the disable_functions php.ini setting.
We were checking the list as comma-delimited (per the description of it as comma-delimited), but in fact spaces are also accepted, and who knows what else.
This commit is contained in:
parent
d0d39b51b8
commit
0ec07e9c65
@ -60,8 +60,13 @@ if (!function_exists('dl')) {
|
|||||||
// Fortunately trying to call the disabled one will only trigger
|
// Fortunately trying to call the disabled one will only trigger
|
||||||
// a warning, not a fatal, so it's safe to leave it for our case.
|
// a warning, not a fatal, so it's safe to leave it for our case.
|
||||||
// Callers will be suppressing warnings anyway.
|
// Callers will be suppressing warnings anyway.
|
||||||
$disabled = array_filter(array_map('trim', explode(',', ini_get('disable_functions'))));
|
try {
|
||||||
if (!in_array('dl', $disabled)) {
|
// Reading the ini setting is hard as we don't know PHP's parsing,
|
||||||
|
// but we can check if it is disabled through reflection.
|
||||||
|
$dl = new ReflectionFunction('dl');
|
||||||
|
// $disabled = $dl->isDisabled(); // don't need to check this now
|
||||||
|
} catch (ReflectionException $e) {
|
||||||
|
// Ok, it *really* doesn't exist!
|
||||||
function dl($library) {
|
function dl($library) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user