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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user