2
0
forked from Wavyzz/dolibarr

Fix: La fonction open_basedir tient compte des codes retours de is_dir non correctes dans le cas d'une config PHP qui utilise open_basedir.

This commit is contained in:
Laurent Destailleur
2006-05-17 21:12:49 +00:00
parent b56ebc929b
commit dfad5bf259

View File

@@ -1797,22 +1797,34 @@ function create_exdir($dir)
{
if ($i > 0) $ccdir .= '/'.$cdir[$i];
else $ccdir = $cdir[$i];
if (eregi("^.:$",$ccdir,$regs)) continue; // Si chemin Windows incomplet, on poursuit par rep suivant
if (eregi("^.:$",$ccdir,$regs)) continue; // Si chemin Windows incomplet, on poursuit par rep suivant
//print "${ccdir}<br>\n";
if ($ccdir && ! is_dir($ccdir))
// Attention, le is_dir() peut <20>chouer bien que le rep existe.
// (ex selon config de open_basedir)
if ($ccdir)
{
umask(0);
if (! @mkdir($ccdir, 0755))
{
dolibarr_syslog("functions.inc.php::create_exdir Erreur: Le r<EFBFBD>pertoire '$ccdir' n'existe pas et Dolibarr n'a pu le cr<EFBFBD>er.");
$nberr++;
}
else
{
dolibarr_syslog("functions.inc.php::create_exdir Directory '$ccdir' created");
$nbcreated++;
}
if (! is_dir($ccdir))
{
dolibarr_syslog("functions.inc.php::create_exdir Directory '$ccdir' does not exists or is outside open_basedir PHP setting.");
umask(0);
if (! @mkdir($ccdir, 0755))
{
// Si le is_dir a renvoy<6F> une fausse info, alors on passe ici.
dolibarr_syslog("functions.inc.php::create_exdir Error: Fails to create directory '$ccdir'.");
$nberr++;
}
else
{
dolibarr_syslog("functions.inc.php::create_exdir Directory '$ccdir' created");
$nberr=0; // On remet <20> z<>ro car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s
$nbcreated++;
}
}
else
{
$nberr=0; // On remet <20> z<>ro car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s
}
}
}
return ($nberr ? -$nberr : $nbcreated);