Ecrire dans un fichier .conf via un formulaire

Petit nouveau ! | 2 Messages

25 avr. 2008, 18:08

Bonjour à tous,

c'est mon premier post donc tout d'abord bonjour à tous ;)

Je connais pas grand chose au PHP hélas et je vous explique mon probleme et mon sujet :

J'ai donc un serveur debian avec asterisk (IPBX) et je doit creer une interface de creation de compte.

J'ai donc sur mon serveur : asterisk et apache

J'ai crée mon formulaire que voici (accessible via le reseau):

Code : Tout sélectionner

<html> <head> <title>Création d'un compte Asterisk</title> </head> <body> <table border="0"> <form name="formulaire" action="insertaccount.php" method="POST" enctype="multipart/form-data"> <tr> <td width="231" align="center">Entrez votre nom</td> <td width="317" align="center"><input type="text" name="nom"></td> </tr> <tr> <tr> <td align="center">Entrez votre password</td> <td align="center"><input type="text" name="pass"></td> </tr> <input type="submit" name="Submit" value="Submit" /> </form> </table> </body> </html>
On va dire que mon serveur est en 192.168.0.1 (si ca peut aider)

Maintenant il me faut creer le fichier php (insertaccount.php) afin d'ouvrir et d'ecrire les 2 valeurs (nom, password) dans le ficher /etc/asterisk/sip.conf qui se situe sur le serveur, de la maniere suivante :

[nom] // nom du formulaire
type=friend // valeur ne faisant pas partie du formulaire mais a ajouter
secret=pass // password du formulaire
quality=yes // valeur ne faisant pas partie du formulaire mais a ajouter
host=dynamic // valeur ne faisant pas partie du formulaire mais a ajouter

bien sur toujours en fin de fichier a chaque fois. (le début du fichier comprend des variables de conf)


J'espere que le sujet est assez clair et si vous desirez des infos demandez moi.

Je bloque vraiment sur cette creation de page php :s

En esperant un coup de main de votre part à tous et merci ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 avr. 2008, 12:25

Qu'il s'agisse d'un .conf, d'un .txt ou de tout autre fichier au format texte, il est très simple d'écrire dans un fichier avec php. Il suffit d'ouvrir le fichier, se placer à la fin et ajouter la ou les chaines de caractères pour le compléter.

Regarde du côté de fopen() pour "ouvrir" le fichier et du côté de fwrite() pour écrire dedans. Le mode d'écriture "append" te permet d'écrire directement à la fin du fichier.

Il ne te reste plus ensuite qu'à ajouter les lignes que tu souhaites et de refermer le fichier avec fclose() :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

26 avr. 2008, 20:34

Merci pour les infos.

Voila ce que j'ai essayé :

Code : Tout sélectionner

<?php if($ouverture = @fopen("../../etc/asterisk/test.conf", "r")) { echo ("L'ouverture du fichier est possible car la fonction fopen retourne TRUE"); } else { echo ("Ouverture du fichier impossible car fopen retourne FALSE"); } ?>
Cela ne marche pas. Par contre cela fonctionne quand le fichier est dans le meme repertoire que le .php (/var/www)

Donc ma question est : comment remonter dans une arborescence ? car j'ai essayé ../../etc/asterisk/test.conf ou encore /etc/asterisk/test.conf et j'ai rien.

ViPHP
AB
ViPHP | 5818 Messages

26 avr. 2008, 21:00

Si le fichier .php de ton script est à la racine de ton site et que tu veux aller chercher le fichier "test.conf" dans le sous dossier "asterisk" du dossier "etc" tu devrais écrire
$ouverture = @fopen("etc/asterisk/test.conf", "r")
Ensuite il faudra peut-être vérifier les autorisations.

Cela dit dans tous les cas PHP t'envoie un message d'erreur qui te permettra d'identifier le pb. A la limite si tu ne le comprends pas, faits nous une copie du message, pour que l'on puisse mieux t'aiguiller.

EDIT PHP t'enverra un message d'erreur uniquement si tu n'utilise pas @ qui est l'opérateur de suppression des erreurs. Donc au moins durant la phase de développement ne l'utilise pas

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

26 avr. 2008, 21:48

Non non il essaie bien d'écrire dans /etc/... à la racine du système ;)

Vérifie la configuration de la directive safe_mode de ton php.ini, ce pourrait être elle qui te bloque.

Dans tous les cas, vire l'@ devant fopen, tu auras ainsi un message d'erreur explicite.