laubro
Messages postés186Date d'inscriptionjeudi 23 décembre 2004StatutMembreDernière intervention 9 juillet 2013
-
12 juil. 2008 à 11:59
Bling 182
Messages postés510Date d'inscriptionlundi 27 novembre 2006StatutMembreDernière intervention 5 juillet 2009
-
12 juil. 2008 à 16:06
bonjour
j'ai un script de copie de repertoire qui tourne impec sur un espace mutualisé, mais une fois sur un dédié, il ne fonctionne pas bien, la copie du contenu du repertoire ne marche plus, voici le message d'erreur :
Warning: copy() [function.copy]:
SAFE MODE Restriction in effect. The script whose uid is 10363 is not
allowed to access /var/www/vhosts/nomdisite.com/httpdocs/repbase owned
by uid 48 in /var/www/vhosts/nomdusite.com/httpdocs/administrator/class_newrep.php on line 42
Warning: copy(../repbase/index.php) [function.copy]: failed to open stream: No such file or directory in /var/www/vhosts/nomdusite.com/httpdocs/administrator/class_newrep.php on line 42
le safe mode est sur ON en local et OFF en général, est ce le ON en local qui empeche la copie ?
pour info la fonction mkdir et rename (création du repertoir de destination et le fait de le renommer) fonctionne, donc mon repertoire "repbase" est bien créé avant d'être renommé
<?php
function create_tab ($dir) { // fonction creant le tableau contenant les repertoires et fichiers
$dir = rtrim ($dir, '/'); // on vire un eventuel slash mis par l'utilisateur de la fonction a droite du repertoire
if (is_dir ($dir)) // si c'est un repertoire
$dh = opendir ($dir); // on l'ouvre
else {
echo $dir, ' n\'est pas un repertoire valide'; // sinon on sort! Appel de fonction non valide
exit;
}
while (($file = readdir ($dh)) !== false ) { //boucle pour parcourir le repertoire
if ($file !== '.' && $file !== '..') { // no comment
$path =$dir.'/'.$file; // construction d'un joli chemin...
if (is_dir ($path)) { //si on tombe sur un sous-repertoire
$tableau[$dir]['dir'][] = $path;
$tabTmp = create_tab ($path); // appel recursif pour lire a l'interieur de ce sous-repertoire
if (is_array ($tabTmp) && is_array ($tableau))
$tableau = array_merge ($tableau, $tabTmp);
}
else
$tableau[$dir]['file'][] = $path;
}
}
closedir ($dh); // on ferme le repertoire courant
if (isset ($tableau)) {
return $tableau;
}
}
function copier_rep ($destination, $reps, $tableau_dir = array ()) { // fonction pour copier repertoire : on cree un repertoire de meme nom, puis on va chercher les fichiers, et on les copie. Si il y a des sous repertoires, appel recursif.
if (empty ($tableau_dir)) {
echo "";
$tableau_dir = create_tab ($reps);
}
if (!is_array ($reps)) {
$reps = array ($reps);
}
foreach ($reps as $rep) {
if (!is_dir ($destination.'/'.basename ($rep))) {
mkdir ($destination.'/'.basename ($rep),0777);
if (!empty ($tableau_dir[$rep]['file']) && isset($tableau_dir[$rep]['file']) && is_array ($tableau_dir[$rep]['file'])) {
foreach ($tableau_dir[$rep]['file'] as $fichier) {
copy ($fichier, $destination.'/'.basename ($rep).'/'.basename ($fichier));
}
}
if (!empty ($tableau_dir[$rep]['dir']) && isset ($tableau_dir[$rep]['dir']) && is_array ($tableau_dir[$rep]['dir'])) {
copier_rep ($destination.'/'.basename ($rep), $tableau_dir[$rep]['dir'], $tableau_dir);
}
}
}
}
copier_rep ('..', 'repbase'); // 1er paramètre : le répertoire de destination sous forme d'une chaine
// 2d paramètre : le répertoire à copier sous forme d'une chaine ou d'un tableau //----------------------------renommer le repertoire-----------------------------
Bling 182
Messages postés510Date d'inscriptionlundi 27 novembre 2006StatutMembreDernière intervention 5 juillet 20093 12 juil. 2008 à 16:06
The script whose uid is 10363 is not allowed to access /var/www/vhosts/nomdisite.com/httpdocs/repbase owned by uid 48 in /var/www/vhosts/nomdusite.com/httpdocs/administrator/class_newrep.php on line 42