Page 1 sur 1

fopen et php

Posté : 06 janv. 2010, 19:42
par dadon
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 ........

Re: fopen et php

Posté : 06 janv. 2010, 19:46
par stealth35
http://php.net/manual/fr/function.copy.php

et utilise file_put_contents :wink:

Re: fopen et php

Posté : 06 janv. 2010, 20:00
par dadon
merci pour ta réponse mais pourquoi mes fopen, fputs ne marchent pas? aussi je travail sous linux debian....

Re: fopen et php

Posté : 06 janv. 2010, 20:12
par stealth35
si c'est pareil, mais file_put_contents c'est plus simple

Re: fopen et php

Posté : 06 janv. 2010, 20:41
par Berzemus
Un question de droits d'écriture ?

Sinon, utiliser fputs est plus flexible que file_put_contents..

Re: fopen et php

Posté : 06 janv. 2010, 21:03
par stealth35
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

Re: fopen et php

Posté : 06 janv. 2010, 21:29
par niuxe
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:

Re: fopen et php

Posté : 06 janv. 2010, 22:06
par Berzemus
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:

Re: fopen et php

Posté : 06 janv. 2010, 23:42
par niuxe
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.

Re: fopen et php

Posté : 07 janv. 2010, 00:05
par stealth35
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);

Re: fopen et php

Posté : 07 janv. 2010, 11:28
par dadon
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/

Re: fopen et php

Posté : 07 janv. 2010, 11:30
par stealth35
ouai exec c'est pas top, utilise la fonction php copy

Re: fopen et php

Posté : 07 janv. 2010, 15:22
par dadon
Ç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.