diff options
author | Brion Vibber <brion@status.net> | 2010-01-12 07:24:43 -0800 |
---|---|---|
committer | Brion Vibber <brion@status.net> | 2010-01-12 07:24:43 -0800 |
commit | cbc3c7b141b8cfd8baa35a580e9fc9ae4f50343c (patch) | |
tree | 448b08216deef1ccb4acd7cfde68936ddd3f6764 | |
parent | 116c5f6839adf518e2bfe27ad2899a474899a9a1 (diff) |
Ticket 2152: avoid fatal when php.ini disables dl via disabled_functions (function_exists returns false even though it exists and cannot be redefined)
-rw-r--r-- | lib/common.php | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/lib/common.php b/lib/common.php index 7342c177a..b280afec0 100644 --- a/lib/common.php +++ b/lib/common.php @@ -45,11 +45,20 @@ define('FOREIGN_FRIEND_RECV', 2); set_include_path(get_include_path() . PATH_SEPARATOR . INSTALLDIR . '/extlib/'); -# To protect against upstream libraries which haven't updated -# for PHP 5.3 where dl() function may not be present... +// To protect against upstream libraries which haven't updated +// for PHP 5.3 where dl() function may not be present... if (!function_exists('dl')) { - function dl($library) { - return false; + // function_exists() returns false for things in disable_functions, + // but they still exist and we'll die if we try to redefine them. + // + // 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. + // Callers will be suppressing warnings anyway. + $disabled = array_filter(array_map('trim', explode(',', ini_get('disable_functions')))); + if (!in_array('dl', $disabled)) { + function dl($library) { + return false; + } } } |