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:
Brion Vibber 2011-01-07 14:48:40 -08:00
parent d0d39b51b8
commit 0ec07e9c65

View File

@ -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;
} }