Modification de fichier avec la fonction exec()

Signaler
Messages postés
10
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
10 février 2005
-
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
-
Bonjour,



j'explique mon problème : je développe une interface web en php sur un
serveur unix. Dans la partie administration de mon interface je
récupère des paramètres que je dois insérer dans plusieurs fichiers de
configuration.

Pour modifier ses fichiers j'utilise la fonction exec() qui me permet
d'executer une commande unix avec php. (j'utilise cette commande car je
trouve que la modification est plus pratique qu'avec la manipulation de
fichiers en php). Je suis arrivé à modifier 2 fichiers avec les
paramètres de cette façon:



la ligne a modifier est du type :

$all_sites = array{"site1","site2","site3");

et je dois par exemple rajouter site4 a la fin:

$all_sites = array{"site1","site2","site3","site4");



mon code qui fonctionne:
# Récupère la ligne concernée $a

$a = exec('cat server.cfg | grep "\$all_sites"');

# Supprime les 2 derniers caractères et met la ligne dans $b

$b = substr($a, 0, -2);

# Ajoute le nom du serveur à la fin de $b

$b = "$b,"$nom_serveur");";

# Ajoute un \ devant les " pour les protéger

$a = addcslashes($a, '"');

$b = addcslashes($b, '"');

# Edition de la commande shell et execution

$cmd = "cat server.cfg | sed -e "s/$a/$b/" > server.cfg";

exec("$cmd", $tab, $rep);



Bref, mon problème arrive: dans cet exemple le fichier à
modifier "server.cfg" est dans le même répertoire que mon fichier php
qui execute le code. Mais je dois modifier 2 autres fichiers qui se
trouvent dans un sous-répertoire de mon arborescence à savoir :
Scripts/perl.conf et Scripts/Getlog.conf.

Je n'arrive pas a executer une commande si le fichier n'est pas dans le même répertoire

losque je lance la premiere ligne :
$a = exec('cat Scripts/server.cfg | grep "\$all_sites"');

il ne se passe rien et j'ai un code de retour d'erreur....




si quelqu'un a une idée pour résoudre mon problème...

Merci d'avance a tous ceux qui essaye de m'aider



Brex

7 réponses

Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
lusss !

en faisant :
$maCommande = "cat Scripts/server.cfg | grep ".$all_sites;
exec($maCommande);

ca marchera peut-etre mieux !
a+++
Messages postés
10
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
10 février 2005

Non, ta commande ne correspond pas à ce que je veux, $all_sites n'est
pas une variable de ma page, c'est juste un string qui se situe dans
mon fichier server.cfg et que je recherche avec grep comme dans
l'exemple que je donne au début.




la ligne a modifier est du type :

$all_sites = array{"site1","site2","site3");

et je dois par exemple rajouter site4 a la fin:

$all_sites = array{"site1","site2","site3","site4");
Messages postés
10
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
10 février 2005

mais meme simplement;



$cmd1 = "cat server.cfg";

exec($cmd1);



$cmd2 = "cat Scripts/perl.conf";

exec($cmd2);


la commande cmd1 marche sans problème mais la $cmd2 ne marche pas !
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
Ouep surement, j'avais juste regardé la syntaxe !
par contre niveau shell peut pas t'aider ca fé bien longtps !
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
ah ouai chelou là quand meme !

et "cat ./Scripts/perl.conf" ??

T'es sur de ta majuscule sur Script (question a la con je sais mais bon ... ;) )
Messages postés
10
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
10 février 2005

lol je viens de trouver...je n'ose pas le dire



Comme toujours je me suis prit la tête sur un problème à la con.
C'était juste un problème de droits d'accès au sous-répertoire. Mon
répertoire /Scripts n'était pas accesible, maintenant ca marche.



Je te remercie beaucoup djagger pour m'avoir aider, désolé si c'était
pas mon code qui avait un problème mais moi qui est pas réfléchie



A bientot sur le forum
Messages postés
536
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
29 janvier 2009
1
héhéhé ca arrive ! l'important c que t'ai trouvé !
allé bonne continuation a +++