Modification de fichier avec la fonction exec()

cs_brex Messages postés 10 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 10 février 2005 - 8 févr. 2005 à 14:30
cs_djagger Messages postés 536 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 29 janvier 2009 - 10 févr. 2005 à 11:06
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

cs_djagger Messages postés 536 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 29 janvier 2009 1
9 févr. 2005 à 14:16
lusss !

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

ca marchera peut-etre mieux !
a+++
0
cs_brex Messages postés 10 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 10 février 2005
10 févr. 2005 à 10:22
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");
0
cs_brex Messages postés 10 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 10 février 2005
10 févr. 2005 à 10:26
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 !
0
cs_djagger Messages postés 536 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 29 janvier 2009 1
10 févr. 2005 à 10:27
Ouep surement, j'avais juste regardé la syntaxe !
par contre niveau shell peut pas t'aider ca fé bien longtps !
0

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

Posez votre question
cs_djagger Messages postés 536 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 29 janvier 2009 1
10 févr. 2005 à 10:29
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 ... ;) )
0
cs_brex Messages postés 10 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 10 février 2005
10 févr. 2005 à 10:59
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
0
cs_djagger Messages postés 536 Date d'inscription lundi 5 mai 2003 Statut Membre Dernière intervention 29 janvier 2009 1
10 févr. 2005 à 11:06
héhéhé ca arrive ! l'important c que t'ai trouvé !
allé bonne continuation a +++
0
Rejoignez-nous