fopen et php

Eléphanteau du PHP | 14 Messages

06 janv. 2010, 19:42

salut tout le monde j'ai un souci avec mon script. En fait dans le script j'ai mis :
$fp1=fopen("exemples.conf","w");
fputs($fp1,"static=yes\n");
fputs($fp1,"writeprotect=no\n");
fputs($fp1,"autofallthrough=yes\n");
fputs($fp1,"clearglobalvars=no\n");
fputs($fp1,"priorityjumping=no\n");
fputs($fp1,"language=fr\n\n");
...............................
...............................
..................................
etc.
fclose($fp1);
exec("cp exemples.conf /etc/ginfo/");
Voila si j'exécute le script le fichier exemples.conf devrait normalement se trouver dans /etc/ginfo/ mais ce n'est pas le cas.......Si quelqu'un a une idée ........

ViPHP
ViPHP | 5462 Messages

06 janv. 2010, 19:46

http://php.net/manual/fr/function.copy.php

et utilise file_put_contents :wink:

Eléphanteau du PHP | 14 Messages

06 janv. 2010, 20:00

merci pour ta réponse mais pourquoi mes fopen, fputs ne marchent pas? aussi je travail sous linux debian....

ViPHP
ViPHP | 5462 Messages

06 janv. 2010, 20:12

si c'est pareil, mais file_put_contents c'est plus simple

ViPHP
ViPHP | 4039 Messages

06 janv. 2010, 20:41

Un question de droits d'écriture ?

Sinon, utiliser fputs est plus flexible que file_put_contents..
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 5462 Messages

06 janv. 2010, 21:03

Un question de droits d'écriture ?

Sinon, utiliser fputs est plus flexible que file_put_contents..
oui mais dans son cas ca l'est pas, fputs c'est bien quand tu veux écrire a un endroit particulier du fichier

Eléphant du PHP | 453 Messages

06 janv. 2010, 21:29

Hello,
Un question de droits d'écriture ?
Ah oui bien vu +1 puisque /etc/ginfo/ ? D'ailleurs le chmod serait soit (pas sûr de moi, merci de me dire si je dis une énormité) :
<edit>
* 774 (lecture/ecriture/execution) pour admin , (lecture/ecriture/execution) pour le groupe, (lecture) pour les autres
* 764 (lecture/ecriture/execution) pour admin, (lecture/ecriture) pour le groupe, (lecture) pour les autres
</edit>

Toutefois, je vois deux choses qui me chagrinent en lisant ton bout de script (les deux arguments de la fonction fopen) :
* Est ce que ton fichier php est dans le même dossier que exemples.conf ?
* Tu ouvres le fichier en mode "w". S'il n'existe pas, il sera créé. Ok ça c'est bon. Il devrait se trouver à coté de ton fichier php actuel. Mais ce dernier place le pointeur au début du fichier. Or, tu fais appel à plusieurs reprises de la fonction fputs. Là, je n'ai pas vérifié, mais il me semble que tes instructions dans exemples.conf seront écrites à l'envers.

Si tel est le cas, tu as deux solutions qui s'offrent à toi :
* soit tu écris :
$fp1 = fopen("exemples.conf","a");//le pointeur à la fin du fichier.
* soit :
$fp1=fopen("exemples.conf","w");
$contenu_exemples = "static=yes\n";
$contenu_exemples .= "writeprotect=no\n";
//etc.
fputs($fp1,$contenu_exemples);
//etc.
Après, je peux me tromper. Je n'ai pas essayé ton code.

Espérant t'avoir aidé, bonne soirée à toi

Au passage, merci stealth35. Je ne me souvenais plus de cette fonction. :) Mais attention, si le fichier existe, le contenu sera écrasé si je ne me trompe pas. Cela revient à prendre mon dernier exemple ($contenu_exemples). (houla, il y en a des exemples dans ce sujet) :langue:
Modifié en dernier par niuxe le 06 janv. 2010, 23:47, modifié 1 fois.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

ViPHP
ViPHP | 4039 Messages

06 janv. 2010, 22:06

fputs c'est bien quand tu veux écrire a un endroit particulier du fichier
C'est vrai, mais loin d'être le seule avantage de fopen() et fwrite(). Fopen() gère plusieurs protocoles de fichiers, et permet de peaufiner le mode d'ouverture. (genre, directement sur ftp avec wrapper de compression)

Mais il est clair que pour le simple cas d'écriture dans un fichier, file_put_contents suffit amplement, c'est pour ça qu'il existe d'ailleurs. :mrgreen:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 453 Messages

06 janv. 2010, 23:42

fputs c'est bien quand tu veux écrire a un endroit particulier du fichier
C'est vrai, mais loin d'être le seule avantage de fopen() et fwrite(). Fopen() gère plusieurs protocoles de fichiers, et permet de peaufiner le mode d'ouverture. (genre, directement sur ftp avec wrapper de compression)

Mais il est clair que pour le simple cas d'écriture dans un fichier, file_put_contents suffit amplement, c'est pour ça qu'il existe d'ailleurs. :mrgreen:
Je pense que tu dois parler de ce genre de fonction : ftp_connect().Mais peux-tu développer sur wrapper compression et le mode d'ouverture de fichier, stp ? Je ne vois trop où tu veux en venir.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

ViPHP
ViPHP | 5462 Messages

07 janv. 2010, 00:05

Berzemus a raison, tu peux ouvrir plusieur protocol definie suivant ton serveur, mem creer tes propre wapper (zend framework fais ca)
http://www.php.net/manual/en/wrappers.php

en exemple un peu dans le sytle de PHAR, ta donc une archive type deflate ou zip, tu va direct cherche un fichier a l'interieur dans avoir a le decompresser eniterement

type zend framework, tu creer un wapper 'view'
tu pourrais ouvrir tes vues avec par exemple : readfile(view://myindex);

Eléphanteau du PHP | 14 Messages

07 janv. 2010, 11:28

bonjour! merci de votre contribution mais en réalité le fichier exemples.conf est bel et bien créé dans le répertoire du script avec son contenu donc je crois que le probléme vient de
exec("cp exemples.conf /etc/ginfo/");
en plus j'ai méme donné des droits 777 pour le répertoire /etc/ginfo/

ViPHP
ViPHP | 5462 Messages

07 janv. 2010, 11:30

ouai exec c'est pas top, utilise la fonction php copy

Eléphanteau du PHP | 14 Messages

07 janv. 2010, 15:22

Ça marche le propriétaire du fichier était "www-data" et donc n'avais pas le droit d'ecriture dans /etc. Mais bon j'ai du donner le droit : chmod -R 777 /etc/ et boooom ça marche.......Encore une fois je vous remercie.