summaryrefslogtreecommitdiff
path: root/install.php
diff options
context:
space:
mode:
Diffstat (limited to 'install.php')
-rw-r--r--install.php44
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']);