8795 sujets

Développement web côté serveur, CMS

Bonjour!

Je doit travailler sur un serveur partagé pas cher apparemment gérer avec plesk, avec une assistance sur laquelle je ne pense pas trop compter. En général quand je ne peux pas fournir moi même le serveur (quand mon client en a déjà un) j'essaye d'adapter mes applications à l'environnement.

Drôle de soucis aujourd'hui, j'ai une application php qui a besoin de créer des dossiers pour y mettre des fichiers.

Naturellement j'utilise mkdir, par contre impossible de mettre ensuite mes fichiers dedans car le propriétaire du dossier et apache du groupe apache, chmod 755 ou même 777 n'y change rien, le problème vient du propriétaire, les fonctions chown et chgrp n'y font rien non plus.

J'ai la possibilité de mettre tous ces fichier dans un même dossier, mais pour d'autre raisons c'est un peu dommage.

Vu que je n'ai pas accès à la configuration ni apache ni php, j'imagine qu'il n'y a plus grand chose à faire?
Modifié par matmat (09 Mar 2010 - 15:14)
Salut,

Bon j'imagine que si chown et chgrp ne fonctionnent pas, c'est pareil pour chmod() ?

Sinon si t'as pas accès à la config. serveur, en effet t'es un peu coincé. Il faut trouver une autre méthode. Par exemple en utilisant un autre ftp sur lequel tu as des droits, sur lequel tu stockes tes images dans tes dossiers depuis le site principal, grâce aux fonctions FTP de PHP .. mais bon là encore, faut te taper le développement supplémentaire Smiley confus
Merci jeff Smiley biggrin ,

jeff52 a écrit :
Bon j'imagine que si chown et chgrp ne fonctionnent pas, c'est pareil pour chmod() ?


Curieusement non, chmod marche, par contre ça change rien, même si le chmod est à 777 je ne peut pas créer un fichier dans mon dossier à cause du propriétaire.

J'ai essayé via ftp avec la fonction suivante:
function force_mkdir($path,$ftp_host='',$ftp_user='',$ftp_pass='',$chmod=''){
  
  mkdir($path);
  
  if(touch("$path/.ok")){
  
    $r = true;
  
  }else{
  
    if($ftp_host AND $ftp_user AND $ftp_pass AND $conn_id = ftp_connect($ftp_host)){

      if(@ftp_login($conn_id,$ftp_user,$ftp_pass)){
        
        $dir=split("/", $path);
        $l = count($dir)-1;
        for($i=0;$i<$l;$i++){
          if(ftp_chdir($conn_id,$dir[$i])){
            $real_path.="/".$dir[$i]; 
          };
        }

        $real_path = $real_path.'/'.$dir[$l];
      
        if(file_exists($path)){
          if(!ftp_rmdir($conn_id,$real_path)){
            $r = false;
          }
        }
      
        if(ftp_mkdir($conn_id,$real_path)){
          if($chmod){
            if(ftp_chmod($conn_id,0777,$real_path)){
              $r = true;
            }else{
              $r = false;
            }
          }else{
            $r = true;
          }
        }else{
          $r = false;
        }
        
      }else{
        $r = false;
      }
      ftp_close($conn_id);
    }else{
      $r = false;
    }
  } 
  return $r;
}


et ça marche très bien Smiley biggrin

Par contre évidement c'est plutôt long pour créer le dossier, mais bon comme le dossier sera créer qu'un fois c'est peut être envisageable.
Bon ben voila, tu t'es bricolé ton ptit système avec FTP Smiley smile Ravi de t'avoir éclairé en tout cas Smiley smile

N'oublie pas de mettre en [Résolu] Smiley cligne