Fix: La fonction create_exdir fonctionne sans warning meme en mode open_basedir actif

This commit is contained in:
Laurent Destailleur 2006-09-06 21:19:01 +00:00
parent 4e629a581a
commit 89a9f29fa3

View File

@ -1942,8 +1942,10 @@ function get_exdir($num,$level=3)
*/ */
function create_exdir($dir) function create_exdir($dir)
{ {
dolibarr_syslog("functions.inc.php::create_exdir dir=$dir"); dolibarr_syslog("functions.inc.php::create_exdir: dir=$dir");
if (@is_dir($dir)) return 0;
$nberr=0; $nberr=0;
$nbcreated=0; $nbcreated=0;
@ -1959,20 +1961,20 @@ function create_exdir($dir)
// (ex selon config de open_basedir) // (ex selon config de open_basedir)
if ($ccdir) if ($ccdir)
{ {
if (! is_dir($ccdir)) if (! @is_dir($ccdir))
{ {
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: Directory '$ccdir' does not exists or is outside open_basedir PHP setting.");
umask(0); umask(0);
if (! @mkdir($ccdir, 0755)) if (! @mkdir($ccdir, 0755))
{ {
// Si le is_dir a renvoyé une fausse info, alors on passe ici. // Si le is_dir a renvoyé une fausse info, alors on passe ici.
dolibarr_syslog("functions.inc.php::create_exdir Error: Fails to create directory '$ccdir'."); dolibarr_syslog("functions.inc.php::create_exdir: Fails to create directory '$ccdir' or directory already exists.");
$nberr++; $nberr++;
} }
else else
{ {
dolibarr_syslog("functions.inc.php::create_exdir Directory '$ccdir' created"); dolibarr_syslog("functions.inc.php::create_exdir: Directory '$ccdir' created");
$nberr=0; // On remet à zéro car si on arrive ici, cela veut dire que les échecs précédents peuvent etre ignorés $nberr=0; // On remet à zéro car si on arrive ici, cela veut dire que les échecs précédents peuvent etre ignorés
$nbcreated++; $nbcreated++;
} }