using new check_load_extension function

This commit is contained in:
Ralf Becker 2009-04-20 12:43:44 +00:00
parent bf036043b2
commit aca05a32e3
9 changed files with 33 additions and 100 deletions

View File

@ -1,31 +1,16 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - calendar: rounded corners * * eGroupWare Calendar: rounded corners
* http://www.egroupware.org * *
* Written by RalfBecker@outdoor-training.de * * @link http://www.egroupware.org
* -------------------------------------------- * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* This program is free software; you can redistribute it and/or modify it * * @package calendar
* under the terms of the GNU General Public License as published by the * * @copyright (c) 2004-9 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* Free Software Foundation; either version 2 of the License, or (at your * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* option) any later version. * * @version $Id$
\**************************************************************************/ */
/* $Id$ */ check_load_extension('gd',true); // true = throw exception if not loadable
// some constanst for pre php4.3
if (!defined('PHP_SHLIB_SUFFIX'))
{
define('PHP_SHLIB_SUFFIX',strtoupper(substr(PHP_OS, 0,3)) == 'WIN' ? 'dll' : 'so');
}
if (!defined('PHP_SHLIB_PREFIX'))
{
define('PHP_SHLIB_PREFIX',PHP_SHLIB_SUFFIX == 'dll' ? 'php_' : '');
}
if (!extension_loaded('gd') && !@dl(PHP_SHLIB_PREFIX.'gd.'.PHP_SHLIB_SUFFIX))
{
die("Can't load the needed php-extension 'gd' !!!");
}
foreach(array('width'=>1,'height'=>1,'color1'=>'000080','color2'=>'ffffff') as $name => $default) foreach(array('width'=>1,'height'=>1,'color1'=>'000080','color2'=>'ffffff') as $name => $default)
{ {
@ -84,4 +69,3 @@ else
imagepng($image); imagepng($image);
} }
imagedestroy($image); imagedestroy($image);
?>

View File

@ -1,31 +1,16 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - calendar: rounded corners * * eGroupWare Calendar: rounded corners
* http://www.egroupware.org * *
* Written by RalfBecker@outdoor-training.de * * @link http://www.egroupware.org
* -------------------------------------------- * * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* This program is free software; you can redistribute it and/or modify it * * @package calendar
* under the terms of the GNU General Public License as published by the * * @copyright (c) 2004-9 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* Free Software Foundation; either version 2 of the License, or (at your * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* option) any later version. * * @version $Id$
\**************************************************************************/ */
/* $Id$ */ check_load_extension('gd',true); // true = throw exception if not loadable
// some constanst for pre php4.3
if (!defined('PHP_SHLIB_SUFFIX'))
{
define('PHP_SHLIB_SUFFIX',strtoupper(substr(PHP_OS, 0,3)) == 'WIN' ? 'dll' : 'so');
}
if (!defined('PHP_SHLIB_PREFIX'))
{
define('PHP_SHLIB_PREFIX',PHP_SHLIB_SUFFIX == 'dll' ? 'php_' : '');
}
if (!extension_loaded('gd') && !@dl(PHP_SHLIB_PREFIX.'gd.'.PHP_SHLIB_SUFFIX))
{
die("Can't load the needed php-extension 'gd' !!!");
}
foreach(array('width'=>-20,'height'=>40,'border'=>1,'color'=>'000080','bgcolor'=>'0000FF') as $name => $default) foreach(array('width'=>-20,'height'=>40,'border'=>1,'color'=>'000080','bgcolor'=>'0000FF') as $name => $default)
{ {
@ -85,4 +70,3 @@ else
imagepng($image); imagepng($image);
} }
imagedestroy($image); imagedestroy($image);
?>

View File

@ -103,7 +103,7 @@ class etemplate_request
{ {
if (is_null(self::$request_class)) if (is_null(self::$request_class))
{ {
self::$request_class = extension_loaded('mcrypt') && function_exists('gzcompress') && self::$request_class = check_load_extension('mcrypt') && function_exists('gzcompress') &&
self::init_crypt() ? __CLASS__ : 'etemplate_request_session'; self::init_crypt() ? __CLASS__ : 'etemplate_request_session';
} }
if (self::$request_class != __CLASS__) if (self::$request_class != __CLASS__)
@ -342,7 +342,7 @@ class etemplate_request
{ {
$key = $GLOBALS['egw_info']['server']['db_pass'].EGW_SERVER_ROOT; $key = $GLOBALS['egw_info']['server']['db_pass'].EGW_SERVER_ROOT;
} }
if (!extension_loaded('mcrypt') && (!function_exists('dl') || !@dl(PHP_SHLIB_PREFIX.'mcrypt'.'.'.PHP_SHLIB_SUFFIX))) if (!check_load_extension('mcrypt'))
{ {
error_log(__METHOD__."() required PHP extension mcrypt not loaded and can not be loaded, eTemplate requests get NOT encrypted!"); error_log(__METHOD__."() required PHP extension mcrypt not loaded and can not be loaded, eTemplate requests get NOT encrypted!");
return false; return false;

View File

@ -7,7 +7,7 @@
* @package api * @package api
* @subpackage db * @subpackage db
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de> * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2003-8 by Ralf Becker <RalfBecker-AT-outdoor-training.de> * @copyright (c) 2003-9 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @version $Id$ * @version $Id$
*/ */
@ -46,15 +46,6 @@
* } * }
*/ */
// some constanst for pre php4.3
if (!defined('PHP_SHLIB_SUFFIX'))
{
define('PHP_SHLIB_SUFFIX',strtoupper(substr(PHP_OS, 0,3)) == 'WIN' ? 'dll' : 'so');
}
if (!defined('PHP_SHLIB_PREFIX'))
{
define('PHP_SHLIB_PREFIX',PHP_SHLIB_SUFFIX == 'dll' ? 'php_' : '');
}
if(empty($GLOBALS['egw_info']['server']['db_type'])) if(empty($GLOBALS['egw_info']['server']['db_type']))
{ {
$GLOBALS['egw_info']['server']['db_type'] = 'mysql'; $GLOBALS['egw_info']['server']['db_type'] = 'mysql';
@ -406,8 +397,7 @@ class egw_db
$this->Host != $GLOBALS['egw']->db->Host || $this->Host != $GLOBALS['egw']->db->Host ||
$this->Port != $GLOBALS['egw']->db->Port))) $this->Port != $GLOBALS['egw']->db->Port)))
{ {
if (!extension_loaded($php_extension) && (!function_exists('dl') || if (!check_load_extension($php_extension))
!dl(PHP_SHLIB_PREFIX.$php_extension.'.'.PHP_SHLIB_SUFFIX)))
{ {
$this->halt("Necessary php database support for $this->Type (".PHP_SHLIB_PREFIX.$php_extension.'.'.PHP_SHLIB_SUFFIX.") not loaded and can't be loaded, exiting !!!"); $this->halt("Necessary php database support for $this->Type (".PHP_SHLIB_PREFIX.$php_extension.'.'.PHP_SHLIB_SUFFIX.") not loaded and can't be loaded, exiting !!!");
return null; // in case error-reporting = 'no' return null; // in case error-reporting = 'no'

View File

@ -20,16 +20,6 @@
* @version $Id$ * @version $Id$
*/ */
// some constants for pre php4.3
if (!defined('PHP_SHLIB_SUFFIX'))
{
define('PHP_SHLIB_SUFFIX',$is_windows ? 'dll' : 'so');
}
if (!defined('PHP_SHLIB_PREFIX'))
{
define('PHP_SHLIB_PREFIX',PHP_SHLIB_SUFFIX == 'dll' ? 'php_' : '');
}
/** /**
* eGW session handling * eGW session handling
* *
@ -381,7 +371,7 @@ class egw_session
} }
if (is_null(self::$mcrypt)) if (is_null(self::$mcrypt))
{ {
if (!extension_loaded('mcrypt') && (!function_exists('dl') || !@dl(PHP_SHLIB_PREFIX.'mcrypt'.'.'.PHP_SHLIB_SUFFIX))) if (!check_load_extension('mcrypt'))
{ {
error_log(__METHOD__."() required PHP extension mcrypt not loaded and can not be loaded, sessions get NOT encrypted!"); error_log(__METHOD__."() required PHP extension mcrypt not loaded and can not be loaded, sessions get NOT encrypted!");
return false; return false;

View File

@ -70,10 +70,8 @@ class egw_session_memcache
*/ */
public static function open($save_path, $session_name) public static function open($save_path, $session_name)
{ {
if (!extension_loaded('memcache') && !dl(PHP_SHLIB_PREFIX.'memcache.'.PHP_SHLIB_SUFFIX)) check_load_extension('memcache',true); // true = throw exception if not loadable
{
throw new Exception("Required PHP extension 'memcache' not loaded AND can NOT be loaded!");
}
self::$memcache = new Memcache; self::$memcache = new Memcache;
foreach(explode(',',$save_path) as $path) foreach(explode(',',$save_path) as $path)
{ {

View File

@ -1462,10 +1462,7 @@ class sqlfs_stream_wrapper implements iface_stream_wrapper
{ {
foreach(array('pdo','pdo_'.self::$pdo_type) as $ext) foreach(array('pdo','pdo_'.self::$pdo_type) as $ext)
{ {
if (!extension_loaded($ext) && function_exists('dl') && !dl($dl=PHP_SHLIB_PREFIX.$ext.'.'.PHP_SHLIB_SUFFIX)) check_load_extension($ext,true); // true = throw Exception
{
throw new Exception ("PHP extension '$ext' not loaded AND can NOT be loaded via dl('$dl')!");
}
} }
$pdo_available = true; $pdo_available = true;
} }

View File

@ -176,7 +176,7 @@ $checks = array(
'func' => 'php_ini_check', 'func' => 'php_ini_check',
'value' => 7, 'value' => 7,
'warning' => '<div class="setup_info">' . lang('The mbstring.func_overload = 7 is needed to fully support unicode (utf-8) or other multibyte-charsets.') . "</div>", 'warning' => '<div class="setup_info">' . lang('The mbstring.func_overload = 7 is needed to fully support unicode (utf-8) or other multibyte-charsets.') . "</div>",
'change' => extension_loaded('mbstring') || function_exists('dl') && @dl(PHP_SHLIB_PREFIX.'mbstring.'.PHP_SHLIB_SUFFIX) ? 'mbstring.func_overload = 7' : '', 'change' => check_load_extension('mbstring') ? 'mbstring.func_overload = 7' : '',
), ),
'ldap' => array( 'ldap' => array(
'func' => 'extension_check', 'func' => 'extension_check',
@ -422,7 +422,7 @@ function extension_check($name,$args)
return True; // check only under windows return True; // check only under windows
} }
// we check for the existens of 'dl', as multithreaded webservers dont have it !!! // we check for the existens of 'dl', as multithreaded webservers dont have it !!!
$available = extension_loaded($name) || function_exists('dl') && @dl(PHP_SHLIB_PREFIX.$name.'.'.PHP_SHLIB_SUFFIX); $available = check_load_extension($name);
echo '<div>'.($available ? $passed_icon : $warning_icon).' <span'.($available ? '' : ' class="setup_warning"').'>'.lang('Checking extension %1 is loaded or loadable',$name).': '.($available ? lang('True') : lang('False'))."</span></div>\n"; echo '<div>'.($available ? $passed_icon : $warning_icon).' <span'.($available ? '' : ' class="setup_warning"').'>'.lang('Checking extension %1 is loaded or loadable',$name).': '.($available ? lang('True') : lang('False'))."</span></div>\n";

View File

@ -75,7 +75,6 @@ class setup_header
$GLOBALS['egw_info']['server']['show_domain_selectbox'] = false; $GLOBALS['egw_info']['server']['show_domain_selectbox'] = false;
$GLOBALS['egw_info']['server']['db_persistent'] = True; $GLOBALS['egw_info']['server']['db_persistent'] = True;
$GLOBALS['egw_info']['server']['sessions_type'] = !$this->check_load_extension('session') ? 'db' :'php4';
$GLOBALS['egw_info']['login_template_set'] = 'idots'; $GLOBALS['egw_info']['login_template_set'] = 'idots';
$GLOBALS['egw_info']['server']['mcrypt_enabled'] = False; $GLOBALS['egw_info']['server']['mcrypt_enabled'] = False;
$GLOBALS['egw_info']['server']['versions']['mcrypt'] = ''; $GLOBALS['egw_info']['server']['versions']['mcrypt'] = '';
@ -228,15 +227,6 @@ class setup_header
return $iv; return $iv;
} }
/**
* checks if a named extension is loaded or loadable
*/
function check_load_extension($extension)
{
return extension_loaded($extension) ||
function_exists('dl') && @dl(PHP_SHLIB_PREFIX.$extension.'.'.PHP_SHLIB_SUFFIX);
}
function check_db_support(&$detected) function check_db_support(&$detected)
{ {
$supported_db = $detected = array(); $supported_db = $detected = array();
@ -254,7 +244,7 @@ class setup_header
$ext = array_shift($data); $ext = array_shift($data);
$func_to_check = array_shift($data); $func_to_check = array_shift($data);
$name = isset($this->db_fullnames[$db]) ? $this->db_fullnames[$db] : strtoupper($db); $name = isset($this->db_fullnames[$db]) ? $this->db_fullnames[$db] : strtoupper($db);
if ($this->check_load_extension($ext) || $func_to_check && function_exists($func_to_check)) if (check_load_extension($ext) || $func_to_check && function_exists($func_to_check))
{ {
$detected[] = lang('You appear to have %1 support.',$name); $detected[] = lang('You appear to have %1 support.',$name);
$supported_db = array_merge($supported_db,$data); $supported_db = array_merge($supported_db,$data);