diff options
Diffstat (limited to 'install.php')
-rw-r--r-- | install.php | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/install.php b/install.php index a59b9469d..30dd34496 100644 --- a/install.php +++ b/install.php @@ -189,9 +189,9 @@ function main() return; } - if( $_GET['checklibs'] ){ + if (isset($_GET['checklibs'])) { showLibs(); - }else{ + } else { if ($_SERVER['REQUEST_METHOD'] == 'POST') { handlePost(); } else { @@ -202,7 +202,7 @@ function main() function haveExternalLibrary($external_library) { - if(isset($external_library['include']) && ! include_once($external_library['include'])){ + if(isset($external_library['include']) && ! haveIncludeFile($external_library['include'])){ return false; } if(isset($external_library['check_function']) && ! function_exists($external_library['check_function'])){ @@ -214,6 +214,15 @@ function haveExternalLibrary($external_library) return true; } +// Attempt to include a PHP file and report if it worked, while +// suppressing the annoying warning messages on failure. +function haveIncludeFile($filename) { + $old = error_reporting(error_reporting() & ~E_WARNING); + $ok = include_once($filename); + error_reporting($old); + return $ok; +} + function checkPrereqs() { $pass = true; @@ -230,7 +239,7 @@ function checkPrereqs() } $reqs = array('gd', 'curl', - 'xmlwriter', 'mbstring'); + 'xmlwriter', 'mbstring','tidy'); foreach ($reqs as $req) { if (!checkExtension($req)) { @@ -267,12 +276,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() @@ -301,19 +317,19 @@ E_O_T; foreach($absent_libraries as $library) { echo '<li>'; - if($library['url']){ + if(isset($library['url'])){ echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>'; }else{ echo htmlentities($library['name']); } echo '<ul>'; - if($library['deb']){ + if(isset($library['deb'])){ echo '<li class="deb package">deb: <a href="apt:' . urlencode($library['deb']) . '">' . htmlentities($library['deb']) . '</a></li>'; } - if($library['rpm']){ + if(isset($library['rpm'])){ echo '<li class="rpm package">rpm: ' . htmlentities($library['rpm']) . '</li>'; } - if($library['pear']){ + if(isset($library['pear'])){ echo '<li class="pear package">pear: ' . htmlentities($library['pear']) . '</li>'; } echo '</ul>'; @@ -326,7 +342,7 @@ E_O_T; foreach($present_libraries as $library) { echo '<li>'; - if($library['url']){ + if(isset($library['url'])){ echo '<a href=">'.$library['url'].'">'.htmlentities($library['name']).'</a>'; }else{ echo htmlentities($library['name']); |