Aller au contenu

Sujets conseillés

Posté

Salut,

J'inscris des mail dans un fichier texte.

Le code marche chez moi.

Mais des qu'il est sur le serveur il me dis:

Warning: fopen(newsletter/mail.txt ): failed to open stream: Permission denied in /disque2/home/laurentviel/www/New/Contact.php on line 13

C'est le "permission denied" qui me gene.

Je suis sur register.com...

Y'as t'il quelques chose que je dois modifier dans la configuration de la securité de php sur mon serveur?

Je me suis penché sur le safe mode mais n'ais pas trouvé de moyen de le modifier par mon script...

Posté

Regardes sous quel utilisateur tourne Apache/php et quelles sont les permissions du répertoire dans lequel tu veux écrire ton fichier.

Idem pour tous les répertoires intermédiaires sous le www qui permettent d'accéder à ce fichier ;)

Posté (modifié)

Ah non, ca ne marche pas...

Bon, sur le ftp, bouton droit proprietes sur le dossier et le fichier texte j'ais mis tout en ecriture pour n'importequel utilisateur.

J'ais permis l'ecriture et l'execution sur mon fichier txt, le php y faisant reference et le dossier contenant le fichier txt.

Je n'ais plus les messages d'erreur...

Cependant,les emails ne s'inscrivent pas dans le ficheir texte, je ne sais pas trop quoi faire...

Modifié par furious Gontran
Posté

Salut,

Plutôt que de dire "ça ne marche pas", ce qui ne nous aide pas vraiment, tu pourrais poster le code à partie de ton appel à fopen().

Au moins on verrait ce que tu essaies d'écrire ;)

Dan

Posté (modifié)

Le probleme maintenant c'est qu'un mail.txt est crée, contenant les mails.

Par contre quand je le regarde dans le ftp, il ne le reconnait pas comme un fichier texte. mais comme un fichier sans extension. Ce qui fais quem on code de lecture ne fonctionne pas (d'apres moi)

LE code d'ecriture:

<?

if (isset($_POST['Mail']))

{

$fichier="newsletter/mail.txt ";

$mail=$_POST['Mail'];

$fp=fopen($fichier, "a+");

fwrite($fp, "$mail");

fwrite($fp, "\n");

echo "<body bgcolor=\"#000000\" text=\"#FFFFFF\" link=\"#FFFFFF\" vlink=\"#FFFFFF\" OnLoad=\"alert ('Votre inscription a bien été prise en compte, à bientot')\">";

}else{

echo "<body bgcolor=\"#000000\" text=\"#FFFFFF\" link=\"#FFFFFF\" vlink=\"#FFFFFF\">";

}

?>

code de l'ecture:

<?

$o=1;

$fp=fopen("mail.txt", "a+");

while (!feof ($fp)) {

if ($o==1)

  {

  echo fgets($fp);

}else{

  echo ",".fgets($fp);

}

$o++;

}

?>

-------------------------------------------

En relisant nexen, je me demande si mon fochier est binaire...

Enfin, je ne pense pas puisque l'option a+ de f open ne fais pas de fichiers binaire....

Mais bon c'est la seule piste que j'ais trouvé.

Modifié par furious Gontran
Posté

Il n'y a pas de "fichier texte" sous Linux. Un fichier est un fichier et tous sont accédés de la même façon.

Les extensions n'ont aucune valeur, pas comme sous Windows.

Par contre, en utilisant le flag "a+" tu positionnes le pointeur de lecture en fin de fichier, là où il n'y a rien à lire ;)

Utilises le flag "a" ou "a+" pour écrire si tu veux, mais "r" pour lire.

Dan

Posté (modifié)

Hola, je dois pas etre tres fort en pingouin...

En fait...

Le probleme, maintenant c'est qu'il me repete:

Warning: fopen(mail.txt): failed to open stream: No such file or directory in /disque2/home/laurentviel/www/New/newsletter/Mail_Newsletter.php on line 12

pour chaques ligne.

Le fichier est pourtant bien nommé mail.txt et se trouve bien dans le meme repertoire...

Est ce a cause de linux ?

Comment faire ?

Modifié par furious Gontran
Posté
Warning: fopen(mail.txt): failed to open stream: No such file or directory in /disque2/home/laurentviel/www/New/newsletter/Mail_Newsletter.php on line 12

Tu as mis les parenthèses autour du nom de fichier ?

Donnes-moi le code de lecture ;)

Il est vrai que le Php n'est manifestement pas ta langue maternelle ;)

Dan

Posté

Bonjour,

Il y a deux choses que tu peux vérifier.

1 - Vérifie que ton fichier se trouve bien dans le même répertoire que ton script (puisque tu ne lui donne pas de chemin)

2 - Fait gaffe aux majuscules. Sous Linux, elles sont importantes... le plus confortable étant de tout mettre en minuscules

Guest Xavir
Posté

bonjour, je crois avoir trouvé :

G bien vu dans ton premier code ceci :

<?
if (isset($_POST['Mail']))
{
$fichier="newsletter/mail.txt ";
$mail=$_POST['Mail'];

hors, a moins d'un bug de copiage, je vois un espaxe entre /mail.txt et ";

Ce qui voudrai dire que ton fichier possède une extension ".txt(espace)"

C'est peut être aussi pour ça que le ftp ne le reconnait pa comme un fichier txt é ke avec la seconde source qui veux ouvrir de fichier sans espaces à la fin ne peux pa.....

J'èspère pour toi que c'était tout aussi bête qua ça...

  • 11 months later...
Posté

Bonjour,

je me permets de réveiller ce sujet car j'ai un problème assez similaire.

Je voudrais mettre en cache de l'XML dans un fichier qui n'existe pas encore. Je voudrais donc que PHP le crée. Mais apparement i' veux pas. :(

Voilà le code :

$XML = "du code xml"; // de l'XML généré dynamiquement que je veux mettre en cache
$b = "xml.txt"; // ça c'est le fichier que je veux créer
$ecriture = fopen ( $b , "w" ) or die ( "Impossible d ouvrir $b en ecriture" );
fwrite ( $ecriture , $XML , strlen ( $XML ) );
fclose ( $ecriture );

Et le résultat :

Warning: fopen(xml.txt): failed to open stream: Permission denied in /home/www/e1c5cba3270802a5261442d68be6ae59/web/xml.php on line 19

Impossible d ouvrir xml.txt en ecriture

Merci d'avance !

Posté

c'est un probleme de permission d'acces.

vérifie si t'as les bonnes permissions pour écrire dans le repertoire avec php.

ya peut-être un .htaccess qui traine dans le coin ou alor peut-être que ton hebergeur ne te permet pas d'écrire de fichiers avec php. regarde également si le fichier n'existe pas déjà avec des permission restreintes, supprime le si c'est le cas.

Posté

Merci pour vos réponses, Xorax et Petit-ourson ! :)

  • Le fichier n'existe pas encore, j'ai bien vérifié.
  • J'ai bien un .htaccess dans mon répertoire. A tout hasard je peux essayer de le modifier, même si c'est côté serveur. Comment je fais ? Je modifie les permissions de .htaccess et comme ça elles s'appliqueront aussi aux autres fichiers ? Ou bien chuis complètement à côté de la plaque ? Indulgence s'il vous plait, je débute. :blush:^_^
  • Enfin, y'a-t-il un moyen simple et rapide de vérifier que mon hébergeur m'autorise à écrire des fichiers avec PHP ?

Merci ! ;)

Posté

Mets ce code dans un fichier se terminant par .php et exécute-le...

Ensuite donne-nous le résultat de l'affichage ;)

<?php
if (ini_get('safe_mode'))
{
   echo "[safe_mode activé]\n\n";
}
else
{
   echo "[safe_mode désactivé]\n\n";
}
?>

Posté (modifié)

OK, je viens de voir dans les FAQs de mon hébergeur :

Safe Mode de php est il enclenché ?

Non, safemode n'est pas utilisé. Nous utilisons les contraintes "openbasedir".

Donc c'est pas une question d'authorisation. Alors est-ce que ça pourrait avoir un lien avec ce .htaccess qui se trouve dans mon répertoire ?

[EDIT] j'ai trouvé également sur leur FAQs :

Puis-je utiliser la fonction Fopen (pour aller lire un fichier qui se trouve sur un autre site internet) ?

Oui vous pouvez utiliser cette fonction.

Etrange non ? :huh:

Modifié par yyaann
Posté
C'est fait côté serveur, donc il peut pas y avoir de pb de htaccess.

j'ai connu des serveurs où je n'avais que les autorisation de lecture et où il m'était impossible d'écrire ou de modifier des fichiers avec php. Notament lorsqu'une extension frontpage est installé, frontpage créé des .htaccess dans ce genre.

essaye de renommer le htaccess et reteste ton script tu verra bien si c'est ça.

Posté
Ben j'obtiens tout simplement une page blanche !  :blink:

Une page blanche ? Pas possible !

Tu dois avoir un problème avec php alors.... il faut que cela t'affiche une ligne.

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...