Skip to content
Extraits de code Groupes Projets
Valider cf714fee rédigé par Fil's avatar Fil
Parcourir les fichiers

savoir parler a mysql dans le cas ou il faut le charger dynamiquement (code...

savoir parler a mysql dans le cas ou il faut le charger dynamiquement (code pompe de phpMyAdmin, qui reussit mieux que SPIP a trouver mysql quand l'extension n'est pas chargee)
parent 9f2ee3e6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -86,17 +86,24 @@ function tester_compatibilite_hebergement() { ...@@ -86,17 +86,24 @@ function tester_compatibilite_hebergement() {
$err[] = _T('install_php_version', array('version' => $p, 'minimum' => $m)); $err[] = _T('install_php_version', array('version' => $p, 'minimum' => $m));
} }
if (!function_exists('mysql_query')) // Il faut une base de donnees tout de meme ...
if (!function_exists('mysql_query')
AND !function_exists('pg_connect')
AND !function_exists('sqlite_open'))
$err[] = _T('install_extension_php_obligatoire') $err[] = _T('install_extension_php_obligatoire')
. " <a href='http://se.php.net/mysql'>MYSQL</a>"; . " <a href='http://www.php.net/mysql'>MYSQL</a>"
. "| <a href='http://www.php.net/pgsql'>PostgreSQL</a>"
. "| <a href='http://www.php.net/sqlite'>SQLite</a>";
// et il faut preg
if (!function_exists('preg_match_all')) if (!function_exists('preg_match_all'))
$err[] = _T('install_extension_php_obligatoire') $err[] = _T('install_extension_php_obligatoire')
. " <a href='http://se.php.net/pcre'>PCRE</a>"; . " <a href='http://se.php.net/pcre'>PCRE</a>";
// et surtout pas ce mbstring.overload
if ($a = @ini_get('mbstring.func_overload')) if ($a = @ini_get('mbstring.func_overload'))
$err[] = _T('install_extension_mbstring') $err[] = _T('install_extension_mbstring')
. "mbstring.func_overload=$a - <a href='http://se.php.net/mb_string'>mb_string</a>.<br /><small>"; . "mbstring.func_overload=$a - <a href='http://www.php.net/mb_string'>mb_string</a>.<br /><small>";
if ($err) { if ($err) {
echo "<p class='verdana1 spip_large'><b>"._T('avis_attention').'</b></p><p>'._T('install_echec_annonce')."</p><ul>"; echo "<p class='verdana1 spip_large'><b>"._T('avis_attention').'</b></p><p>'._T('install_echec_annonce')."</p><ul>";
...@@ -235,21 +242,33 @@ function fieldset($legend, $champs = array(), $horchamps='') { ...@@ -235,21 +242,33 @@ function fieldset($legend, $champs = array(), $horchamps='') {
function install_connexion_form($db, $login, $pass, $predef, $hidden, $etape) function install_connexion_form($db, $login, $pass, $predef, $hidden, $etape)
{ {
$pg = function_exists('pg_connect'); $pg = function_exists('pg_connect');
$mysql = function_exists('mysql_connect');
// demander les version dispo de mysql
if (include_spip('req/mysql')) {
$versions = spip_versions_mysql();
$mysql = !!$versions;
}
// demander les version dispo de sqlite // demander les version dispo de sqlite
include_spip('req/sqlite_generique'); if (include_spip('req/sqlite_generique')) {
$versions = spip_versions_sqlite(); $versions = spip_versions_sqlite();
$sqlite2 = in_array(2, $versions); $sqlite2 = in_array(2, $versions);
$sqlite3 = in_array(3, $versions); $sqlite3 = in_array(3, $versions);
}
// cacher le formlaire s'il n' a qu'un serveur // ne pas cacher le formulaire s'il n'a qu'un serveur :
// ou si l'installation est predefinie avec un serveur particulier // ca permet de se rendre compte de ce qu'on fait !
/*
if (($pg + $mysql + $sqlite2 + $sqlite3) == 1){ if (($pg + $mysql + $sqlite2 + $sqlite3) == 1){
if ($mysql) $server_db = 'mysql'; if ($mysql) $server_db = 'mysql';
if ($pg) $server_db = 'pg'; if ($pg) $server_db = 'pg';
if ($sqlite2) $server_db = 'sqlite2'; if ($sqlite2) $server_db = 'sqlite2';
if ($sqlite3) $server_db = 'sqlite3'; if ($sqlite3) $server_db = 'sqlite3';
} elseif ($predef[0]) { } else
*/
// le cacher si l'installation est predefinie avec un serveur particulier
if ($predef[0]) {
$server_db = _INSTALL_SERVER_DB; $server_db = _INSTALL_SERVER_DB;
} }
......
...@@ -16,6 +16,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -16,6 +16,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// http://doc.spip.org/@base_db_mysql_dist // http://doc.spip.org/@base_db_mysql_dist
function req_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='', $ldap='') { function req_mysql_dist($host, $port, $login, $pass, $db='', $prefixe='', $ldap='') {
load_extension('mysql');
if ($port > 0) $host = "$host:$port"; if ($port > 0) $host = "$host:$port";
$link = mysql_connect($host, $login, $pass, true); $link = mysql_connect($host, $login, $pass, true);
...@@ -699,4 +700,64 @@ function spip_release_lock($nom) { ...@@ -699,4 +700,64 @@ function spip_release_lock($nom) {
@mysql_query("SELECT RELEASE_LOCK(" . _q($nom) . ")"); @mysql_query("SELECT RELEASE_LOCK(" . _q($nom) . ")");
} }
// Renvoie false si on n'a pas les fonctions mysql (pour l'install)
// http://doc.spip.org/@spip_versions_mysql
function spip_versions_mysql() {
load_extension('mysql');
return function_exists('mysql_query');
}
// Une fonction pour charger dynamiquement mysql.so,
// adaptee de phpMyAdmin ; c'est mieux si on n'en a pas besoin...
// http://doc.spip.org/@load_extension
function load_extension($module) {
if (extension_loaded($module)) {
return true;
}
// A-t-on le droit de faire un dl() ; si on peut, on memorise la reponse,
// lourde a calculer, dans les meta
if (!isset($GLOBALS['meta']['dl_allowed'])) {
if (!@ini_get('safe_mode')
&& @ini_get('enable_dl')
&& @function_exists('dl')) {
ob_start();
phpinfo(INFO_GENERAL); /* Only general info */
$a = strip_tags(ob_get_contents());
ob_end_clean();
if (preg_match('@Thread Safety[[:space:]]*enabled@', $a)) {
if (preg_match('@Server API[[:space:]]*\(CGI\|CLI\)@', $a)) {
$GLOBALS['meta']['dl_allowed'] = true;
} else {
$GLOBALS['meta']['dl_allowed'] = false;
}
} else {
$GLOBALS['meta']['dl_allowed'] = true;
}
} else {
$GLOBALS['meta']['dl_allowed'] = false;
}
// Attention, a l'installation le ecrire_meta() echouera ;
// d'ou cette ecriture un peu bizarre.
include_spip('inc/meta');
ecrire_meta('dl_allowed', $GLOBALS['meta']['dl_allowed'], 'non');
}
if (!$GLOBALS['meta']['dl_allowed']) {
return false;
}
/* Once we require PHP >= 4.3, we might use PHP_SHLIB_SUFFIX here */
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
$module_file = 'php_' . $module . '.dll';
} elseif (PHP_OS=='HP-UX') {
$module_file = $module . '.sl';
} else {
$module_file = $module . '.so';
}
return @dl($module_file);
}
?> ?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter