Problème d'écriture sur un fichier .txt

Eléphant du PHP | 77 Messages

30 mai 2006, 11:28

Bonjour,

je n'arrive pas à écrire dans un fichier .txt avec la fonction suivante :
<?php

$contenu = (isset ($_POST['contenu']) && $_POST['contenu'] != null) ? $_POST['contenu']: null;
$domaine = (isset ($_POST['domaine']) && $_POST['domaine'] != null) ? $_POST['domaine']: null;

$fichier = $domaine . "donnees/fichier.txt";
if ($ouverture = fopen ($fichier,'w+'))
{
	fputs ($ouverture, stripslashes ($contenu));
	fclose ($ouverture);
	echo "&etatTraitement=true&";
}
else
{
	echo "&etatTraitement=Problème&";
	exit ();
}

?>
Je reçois "Problème".

C'est peut-être une histoire de droit mais j'ai passé le safe mode de php5 à on (je suis en local avec MAMP).

Quelqu'un a une idée ?
Merci. lulu.

ViPHP
ViPHP | 3607 Messages

30 mai 2006, 11:54

est-ce que le problème viendrait pas du fait que le $domaine est à null?
je sais pas si concaténer null à une chaine est possible...
essaye de faire
$domaine = (isset ($_POST['domaine']) && $_POST['domaine'] != null) ? $_POST['domaine']: ""; 

Eléphant du PHP | 77 Messages

30 mai 2006, 12:03

Non non, le domaine envoyé est correct. J'ai essayé avec ta proposition : ça ne change rien.

Pour affiner, la lecture de mon fichier me renvoit une chaine vide :
if ($ouverture = fopen ($fichier, "r"))
{
	$texte = fgets ($ouverture, 4096);
	echo "&etatTraitement=Résultat : ".$texte."&";
	fclose ($ouverture);
}
J'obtiens "Résultat : "

Pourtant fpassthru me renvoit 554.

Eléphant du PHP | 413 Messages

01 juin 2006, 17:06

salut,

peut-être que le nom du fichier est un peu moisi. Par exemple :
XXdonnees/fichier.txt

si le répertoire "XXdonnees" n'existe pas, alors ça fera une erreur.
fais un echo $fichier; just'avant le fopen, pour vérifier ce genre de problème.

il peut aussi y avoir des droits d'écriture insuffisants sur un fichier.txt déjà existant.
--
Goeb

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

01 juin 2006, 17:23

tu ne dis rien sur ce que représentent $domaine et donnees : est-ce deux répertoires ou un seul ?
si donnees est un sous-répertoire de $domaine il faut écrire $domaine."/donnees/fichier.txt"

et t'as pas besoins d'utiliser le mode "w+" seul "w" suffit voir fopen().

Si c'est un problème de droit d'accès utilise un chmod($fichier, 755)
755: tout pour le propriétaire, lecture et exécution pour les autres
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène