]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Check that 'dl' function is available and usable before trying to call it with error...
authorBrion Vibber <brion@pobox.com>
Tue, 1 Sep 2009 23:04:36 +0000 (20:04 -0300)
committerCraig Andrews <candrews@integralblue.com>
Mon, 14 Sep 2009 01:53:30 +0000 (21:53 -0400)
Fixed for StatusNet installer as well as some external libraries that should be fixed upstream if they haven't already been:
* PEAR
* Auth/OpenID
* Auth/Yadis

extlib/Auth/OpenID/BigMath.php
extlib/Auth/Yadis/XML.php
extlib/PEAR.php
install.php

index 45104947d6da44412671f6e319f0dcf817131893..b5fc627a096cee6247daaf495b2d9b1e29d86e61 100644 (file)
@@ -376,7 +376,7 @@ function Auth_OpenID_detectMathLibrary($exts)
         // Try to load dynamic modules.
         if (!$loaded) {
             foreach ($extension['modules'] as $module) {
-                if (@dl($module . "." . PHP_SHLIB_SUFFIX)) {
+                if (function_exists('dl') && ini_get('enable_dl') && !ini_get('safe_mode') && @dl($module . "." . PHP_SHLIB_SUFFIX)) {
                     $loaded = true;
                     break;
                 }
index 4854f12bbcd2e3ca5d4f382a16e9491da0ee611b..7232d6cbdd85dbcfe140b0d70818aecf9645cdd2 100644 (file)
@@ -349,7 +349,7 @@ function &Auth_Yadis_getXMLParser()
     foreach ($extensions as $name => $params) {
         if (!extension_loaded($name)) {
             foreach ($params['libname'] as $libname) {
-                if (@dl($libname)) {
+                if (function_exists('dl') && ini_get('enable_dl') && !ini_get('safe_mode') && @dl($libname)) {
                     $classname = $params['classname'];
                 }
             }
index 4c24c6006a398f8f8ade714a87e67db58b9c7619..fcefa964a3299e5832339ce04fe2e7a1165bbf33 100644 (file)
@@ -746,7 +746,7 @@ class PEAR
     {
         if (!extension_loaded($ext)) {
             // if either returns true dl() will produce a FATAL error, stop that
-            if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1)) {
+            if ((ini_get('enable_dl') != 1) || (ini_get('safe_mode') == 1) || !function_exists('dl')) {
                 return false;
             }
             if (OS_WINDOWS) {
index c49043e5c6c441ad91a6fd4cabea2ae3bdc22444..39984aa0862df078f3f93795aab2609839f818a8 100644 (file)
@@ -267,12 +267,19 @@ function checkPrereqs()
 
 function checkExtension($name)
 {
-    if (!extension_loaded($name)) {
-        if (!@dl($name.'.so')) {
-            return false;
-        }
+    if (extension_loaded($name)) {
+        return true;
+    } elseif (function_exists('dl') && ini_get('enable_dl') && !ini_get('safe_mode')) {
+       // dl will throw a fatal error if it's disabled or we're in safe mode.
+       // More fun, it may not even exist under some SAPIs in 5.3.0 or later...
+       $soname = $name . '.' . PHP_SHLIB_SUFFIX;
+       if (PHP_SHLIB_SUFFIX == 'dll') {
+               $soname = "php_" . $soname;
+       }
+       return @dl($soname);
+    } else {
+        return false;
     }
-    return true;
 }
 
 function showLibs()