Chmod problème gestion des droits

Lili -  
bg62 Messages postés 26248 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je pense avoir un problème de gestion des droits utilisateurs, lorsque je lance mon script php, il me renvoie une erreur du type:
Warning: chmod() expects parameter 1 to be string, resource given in C:\Program Files\EasyPHP-5.3.1\www\selection.php on line 35+-

Pourtant j'ai modifié les droits sur le fichier en le rendant accessible à tous avec la commande chmod.

public function resultat($fichier) {
$handle=fopen("C:\Documents and Settings\Laurie\Bureau\scripts\sequence1.fasta","w");
chmod($handle,0777);
fwrite($handle,$fichier);#enregistrement de la séquences dans un fichier sequence1.fasta
fclose($handle);
}

Si quelqu'un à une solution à me proposer, ce serai très gentil de votre part.
Merci
A voir également:

12 réponses

le père
 
Bonjour

Le message d'erreur ne dit pas qu'il te manque des droits.
Il dit que tu passes un mauvais paramètre à la fonction chmod : il faut lui passer une chaîne et tu lui passes une ressource.
Regarde le mode d'emploi de la fonction chmod : le 1er paramètre doit être un nom de fichier, pourquoi lui passes-tu le truc bizarre (la resource $handle) renvoyé par le fopen ?

D'ailleurs, il me semblerait plus logique de changer les droits AVANT d'ouvrir le fichier qu'après.
0
lili
 
je l'ai supprimé et le script n'affiche plus cette erreur, mais je pense que cela n'a fait que reporter le problème, il me dit à présent que certaine de mes arguments ne sont manquant, or je les ai tous bien déclarés.
Dans la première méthode
public function execute() {
$this->resultat($this->file);
}

public function resultat($fichier) {
$handle=fopen("C:\Documents and Settings\Laurie\Bureau\scripts\sequence1.fasta","w+");
fwrite($handle,$fichier");
fclose($handle);

Le problème semble venir de $fichier qui devrai normalement contenir $this->file, or celui ci ne semble pas être définit.
Warning: Missing argument 1 for selection::resultat(), called in C:\Program Files\EasyPHP-5.3.1\www\index.php on line 5 and defined in C:\Program Files\EasyPHP-5.3.1\www\selection.php on line 35

Notice: Undefined variable: fichier in C:\Program Files\EasyPHP-5.3.1\www\selection.php on line 38
P.S je l'avais mis après car j'ai utilisé fopen pour crée et ouvrir mon fichier c'est pour cela que j'avais mis après.
cordialement
0
le père
 
cela n'a fait que reporter le problème
Non, cela n'a rien reporté du tout. Cela a réglé un problème, et celui que tu vois maintenant existait déjà avant.

il me dit à présent que certaine de mes arguments ne sont manquant, or je les ai tous bien déclarés Il a rarement tort, tu sais... S'il te dit qu'il manque un argument, c'est qu'il en manque un. Disons que pour l'instant tu ne comprends pas pourquoi. Qu'y a-t-il ligne 5 de ton fichier index.php ? Et si c'est $this->resultat($this->file); , où et comment a été initialisé $this->file ?
0
lili
 
Bonjour,

Alors dans le script index je lance mes méthodes:
require_once("./selection.php");
$test=new selection();
$test->execute();
$test->resultat();

Celle qui ne fonctionne pas c'est la dernière $test->resultat();

Ensuite $this->resultat($this->file); est contenue dans la méthode

public function execute() {

if(file_exists($this->way)) {
$lignes= file ($this->way);

foreach($lignes as $ligne) {
for($a=0;$a<strlen($ligne);$a++){
$this->file=substr($ligne,$a,$this->b);
$this->resultat($this->file);
}
}
}
else {
die("impossible d'ouvrir le fichier FASTA");
}

}

Vient ensuite la méthode : public function resultat($fichier) que j'appelle dans l'autre méthode pour pouvoir récupérer $this->file dans celle ci à travers $fichier.
Et c'est donc $fichier qui n'a pas d'attribue.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bg62 Messages postés 26248 Date d'inscription   Statut Modérateur Dernière intervention   2 429
 
pourquoi ce fichier:
C:\Documents and Settings\Laurie\Bureau\scripts\sequence1.fasta","w+"

qui est sur le bureau et pas dans 'www ' ?
0
le père
 
-> bg62 :
et pourquoi pas ? Il s'agit d'un fichier de données manipulé avec fopen, pas d'un script. On peut discuter du côté "propre" de la chose, mais techniquement je ne vois rien à redire.
->lili
$test->resultat();
L'erreur est là et le message était explicite : tu appelles la méthode resultat() sans paramètre alors qu'elle est définie avec un paramètre : ton appel est incorrect
0
bg62 Messages postés 26248 Date d'inscription   Statut Modérateur Dernière intervention   2 429
 
et les droits en écriture de windows ... ? ça joue aussi quand même pour un fichier sur le bureau !
quand on teste pour un site on le fait dans le dossier de 'simulation' ...
0
lili
 
Tout d'abord merci pour vos réponses,
Je suis d'accord avec vous, mes fichiers sont très mal rangés, mais c'est pour me faciliter leur accès.

Ensuite, dans mon index j'appelle effectivement la méthode sans paramètre : $test->resultat();
Mais lorsque je mets le paramètre, cela donnerai alors $test->resultat($this->file);
Il me sort une nouvelle erreur:
Fatal error: Using $this when not in object context in C:\Program Files\EasyPHP-5.3.1\www\index.php on line 5
Ce qui est normal étant donné que cet attribut n'est pas déclaré dans ce script.

J'ai donc essayé avec $fichier => $test->resultat($fichier);
Voici la nouvelle sortie:
Notice: Undefined variable: fichier in C:\Program Files\EasyPHP-5.3.1\www\index.php on line 5
$fichier n'est pas définit non plus dans ce script.
Voila je ne comprend vraiment pas d'où vient le problème car ces variables sont normalement toutes définies.
0
lili
 
Lorsqu'il est crée le fichier texte a les droits par défaut. On peut écrire dedans, j'ai fait un test, le problème vient de la déclaration des attributs.
0
bg62 Messages postés 26248 Date d'inscription   Statut Modérateur Dernière intervention   2 429
 
quels droits par défaut ? là est le problème ...
Je suis d'accord avec vous, mes fichiers sont très mal rangés, mais c'est pour me faciliter leur accès. 

là c'est ton avis ... commence par les mettre là où ils doivent l'être .. ;-)
0
lili
 
Je vais essayer de tout mettre dans le www...
0
le père
 
Je vais essayer de tout mettre dans le www...
Aucun message d'erreur n'indique que tu as un problème de droit d'accès.

Le problème c'est ton appel à resultat.
Si tu l'appelles, en principe, c'est pour ajouter un texte ("$fichier") ,dans ton fichier ...sequence1.fasta
L'appeler sans paramètre ne veut rien dire
L'appeler avec $this->file ne veut rien dire quand tu es en dehors de la définition d'une classe (this n'a pas de sens hors de la définition d'une classe)
L'appeler avec $fichier ne veut rien dire car effectivement $fichier n'est pas défini (le paramètre$fichier de ta méthode resultat n'est pas défini en dehors de cette méthode). Je ne vois aucune autre définition avant la ligne 5
Bref, tu l'appelles pour ajouter quelque chose dans un fichier, mais tu ne sembles pas savoir ce que tu veux ajouter.

Je crois que cet appel est simplement inutile car déjà fait dans le $test->execute(); qui précède. Mais reste à savoir où est initialisé le membre $file
0
bg62 Messages postés 26248 Date d'inscription   Statut Modérateur Dernière intervention   2 429
 
vaudrait mieux même pour les "chemins" ...
0