2010-10-05 8 views
0

J'ai un script qui s'exécute sur un site intermédiaire où il prend une image téléchargée, crée un répertoire (s'il existe) et télécharge l'image dans ledit répertoire. J'essaye de changer le répertoire qui a été créé sur le site en direct et qui n'a pas de chance. Assez certain que c'est ce bloc de code qui cherche toujours l'URL de mise en scène au lieu du live.problème lors de la création de répertoires avec chmodDirectory

function chmodDirectory($path = '.', $level = 0){ 
$ignore = array('cgi-bin', '.', '..'); 

$dh = @opendir($path); 


while(false !== ($file = readdir($dh))){ // Loop through the directory 
    if(!in_array($file, $ignore)){ 
    if(is_dir("$path/$file")){ 
     chmod("$path/$file",0777); 
     chmodDirectory("$path/$file", ($level+1)); 
    } else { 
     chmod("$path/$file",0777); // desired permission settings 
    }//elseif 

    }//if in array 

}//while 

closedir($dh); 

} // fonction

?> Merci à l'avance pour toute aide!

EDIT: Le problème réside dans le fait que même si j'ai modifié les chemins et que la base de données stocke les URL correctes, le répertoire que je souhaite créer ou accéder est toujours créé/accédé sur le répertoire de transfert.

+0

Vous ne décrivez pas ce qui ne va pas, quel est le résultat attendu, quelles erreurs obtenez-vous ... –

+0

Je l'ai depuis édité. Juste pour clarifier à nouveau. Il crée le répertoire dans la partie de mise en scène du site et je ne suis pas sûr de l'endroit où il obtient $ path et comment le définir dans mon répertoire désiré. –

+1

Enlevez le '@' devant 'opendir', et voyez par vous-même s'il peut ouvrir le' $ path' .... – Wrikken

Répondre

0

Les commandes relatives aux fichiers dans PHP sont toutes "conscientes du répertoire de travail courant". Vous commencez votre chmodDirectory() avec . comme le chemin, ce qui signifie "le répertoire de travail actuel", qui est par défaut le répertoire dans lequel le script existe.

Si vous exécutez le site de transit en tant que sous-répertoire de la " Live "site, il n'y a aucun moyen d'avoir la fonction as-is point dans les répertoires en direct, car vous sortez le parent '.' répertoire et seulement creuser plus profond. Par exemple, si votre script est:

/home/sites/example.com/htdocs/staging/v1.1/upload.php 

alors le premier répertoire traité sera

/home/sites/example.com/htdocs/staging/v1.1/ 

Si vous voulez démarrer le processus dans la région « live », vous auriez à appeler la fonction d'un chemin d'accès de la source originale de:

ou mieux encore:

chmodDirectory('/home/sites/example.com/htdocs/'); // start at this absolute path 

comme chemin à la place, donc il travaillera hors de la version "live" au lieu de commencer dans la zone de transit.

0

Salut les gars, merci pour votre aide ... l'erreur est en train de se produire à partir de l'open_basedir dans les paramètres de php.ini. Je suis incapable d'écrire un répertoire parce que je suis sous un répertoire de sous-domaine.

Questions connexes