IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fopen qui ne fait rien ? [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 65
    Points
    65
    Par défaut fopen qui ne fait rien ?
    Bonjour à vous !
    Je suis actuellement en galère sur un bout de code assez idiot. Je vous le met en simplifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        public function EcrireTXT($donnees){
        $filename = "donnees.txt";
            if (!$handle = fopen($filename, 'a+')) {
                echo "Impossible d'ouvrir le fichier $filename";
                exit;
            }
            if (fwrite($handle, $donnees) === FALSE) {
                echo "Impossible d'écrire dans le fichier $filename";
                exit;
            } else echo "L'écriture de '$donnees' dans le fichier $filename a réussi";
            fclose($handle);
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    	//On Créer une socket TCP/IP. 
    	public function __construct($adresse,$port) {	
    	echo "Lancement du sniffeur : OK";
    		$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    		$this->adresse=$adresse;
    		$this->port=$port;	
     
    		if ($this->socket) {
    			socket_set_option($this->socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>0, 'usec'=>0));
    			$this->EcrireTXT("<span class=\"avertissements\">Création de la socket : <b>Ok.</b></span><br />");
    		} else {
    			$this->EcrireTXT("<span class=\"avertissements\">Création du socket : Erreur lors de la création de la socket.</span><br />"); 
    		}
    ...
    La fonction EcrireTXT est bien appelée, les echos surgissent me disant que tout va bien.
    Mais mon fichier n'est pas créé s'il n'existe pas, et s'il existe, rien y est inscris.
    Est-ce la fatigue qui me fait rater quelque chose ? Merci d'avance !

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    utilise file_put_contents flag FILE_APPEND si tu veux rajouter des données

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 65
    Points
    65
    Par défaut
    Bonjour, et merci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public function EcrireTXT($donnees){
        $file = "data.txt";
        if (!file_put_contents($file, $donnees, FILE_APPEND | LOCK_EX)) echo "Echec !"; else echo "Victoire !";
        }
    M'affiche victoire, mais non. Rien n'est ajouté.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par devoluti0n Voir le message
    Bonjour, et merci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public function EcrireTXT($donnees){
        $file = "data.txt";
        if (!file_put_contents($file, $donnees, FILE_APPEND | LOCK_EX)) echo "Echec !"; else echo "Victoire !";
        }
    M'affiche victoire, mais non. Rien n'est ajouté.
    et si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $file = "data.txt";
    var_dump(is_writable($file));
    $put = file_put_contents($file, $donnees, FILE_APPEND | LOCK_EX);
    if($put)
    {
        echo file_get_contents($file);
    }
    else
    {
         echo "Echec !";
    }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 65
    Points
    65
    Par défaut
    La même sans var dump :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public function EcrireTXT($donnees){
            $file = "data.txt";
            $put = file_put_contents($file, $donnees, FILE_APPEND | LOCK_EX);
            if($put){
                echo file_get_contents($file);
            } else {
                 echo "Echec !";
            }
        }
    Me retourne ce qui devrai être dans le fichier, comme si il arrivait à lire via file_get_contents($file);

    Sauf que mon fichier est vide.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    mais le var_dump est a quel valeur ?

    EDIT : ton error_reporting est a quelle valeur ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 65
    Points
    65
    Par défaut
    Ca me fait un echo de tout le basard, et ça conclue par : bool(true)

    Edit : error_reporting(E_ALL);

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as essayé avec un autre fichier ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    t'as essayé avec un autre fichier ?
    Oui, même souci.

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par devoluti0n Voir le message
    Ca me fait un echo de tout le basard, et ça conclue par : bool(true)

    Edit : error_reporting(E_ALL);
    met toi en E_ALL | E_STRICT

    donc le file_get_contents marche tu récupères les données
    mais le file_puts_contents ne fais rien

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 65
    Points
    65
    Par défaut
    J'ai peut être une piste...
    J'oubliais de préciser que je passais en console pour exécuter ce traitement de mise en fichier, je pensais que c'était négligeable.

    Si je passe par l'url directement via mon navigateur, ça marche, mais par la console de php.exe, non.
    C:\wamp\bin\php\php5.3.0\php.exe "C:\wamp\www\Monprojet\classes.php"
    Hmm, peut être quelque chose à activer ?

  12. #12
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd C:\wamp\www\Monprojet
    C:\wamp\bin\php\php5.3.0\php.exe classes.php

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    189
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 189
    Points : 65
    Points
    65
    Par défaut
    Effectivement, ça marche !
    Parfais avec un .bat tout neuf!

    Merci beaucoup pour ton aide très précieuse et ta patience .
    Je suppose que du coup il ne prenait pas compte de l'arbo des fichiers...

    Merci beaucoup, je pense que je vais avoir pas mal de .txt à nettoyer dans mon dossier lol !


  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par devoluti0n Voir le message
    Merci beaucoup, je pense que je vais avoir pas mal de .txt à nettoyer dans mon dossier lol !

    c'est que j'allais te dire

  15. #15
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Et à l'avenir, utilise la fonction dirname()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $file = dirname(__FILE__).DIRECTORY_SEPARATOR.'data.txt';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. TRIGGER qui ne fait rien ?
    Par innova dans le forum Développement
    Réponses: 3
    Dernier message: 20/11/2006, 14h39
  2. Réponses: 10
    Dernier message: 16/11/2006, 21h36
  3. [PHP-JS] Méthode flush() qui ne fait rien
    Par Khrysby dans le forum Langage
    Réponses: 9
    Dernier message: 21/05/2006, 19h55
  4. [debutant]programme qui ne fait rien.
    Par Battosaiii dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 04/12/2005, 22h19
  5. procédure stockée qui ne fait rien
    Par trotters213 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 10/03/2005, 20h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo