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];
|
if ($i > 0) $ccdir .= '/'.$cdir[$i];
|
||||||
else $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";
|
// Attention, le is_dir() peut <20>chouer bien que le rep existe.
|
||||||
if ($ccdir && ! is_dir($ccdir))
|
// (ex selon config de open_basedir)
|
||||||
|
if ($ccdir)
|
||||||
{
|
{
|
||||||
umask(0);
|
if (! is_dir($ccdir))
|
||||||
if (! @mkdir($ccdir, 0755))
|
{
|
||||||
{
|
dolibarr_syslog("functions.inc.php::create_exdir Directory '$ccdir' does not exists or is outside open_basedir PHP setting.");
|
||||||
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++;
|
umask(0);
|
||||||
}
|
if (! @mkdir($ccdir, 0755))
|
||||||
else
|
{
|
||||||
{
|
// Si le is_dir a renvoy<6F> une fausse info, alors on passe ici.
|
||||||
dolibarr_syslog("functions.inc.php::create_exdir Directory '$ccdir' created");
|
dolibarr_syslog("functions.inc.php::create_exdir Error: Fails to create directory '$ccdir'.");
|
||||||
$nbcreated++;
|
$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);
|
return ($nberr ? -$nberr : $nbcreated);
|
||||||
|
|||||||
Reference in New Issue
Block a user