fwrite(): supplied argument is not a valid stream resource
Je reçois 3 erreurs lorsque j'utilise ce code:
Warning: fopen() [function.fopen]: Filename cannot be empty
Warning: fwrite(): supplied argument is not a valid stream resource
Warning: fclose(): supplied argument is not a valid stream resource
Je ne sais pas quoi faire. Je suis un php noob.
<?php
$random = rand(1, 9999999999);
$location = "saves/".$random;
while (file_exists($location)) {
$random = rand(1, 999999999999);
$location = "saves/".$random;
}
$content = "some text here";
$fp = fopen($location,"wb");
fwrite($fp,$content);
fclose($fp);
?>
- Puis-je demander comment le faire? Désolé, pour la première fois.
- Ne devriez-vous pas également obtenir un Avis alors sur
$location
être vide? - Je l'ai fait mais Il ne l'est pas. Bien pas après la boucle.
- Puisque le fichier n'existe pas encore, votre
while
condition de ne pas travailler, et c'est pourquoi vous obtenez ces messages d'erreur. Et puisque vous êtes à l'aide d'un nombre aléatoire pour le fichier, vous ne saurez jamais quel fichier ouvrir en premier lieu. Il suffit de retirer lewhile
boucle. - Ok je l'ai changé mais toujours à bien faire les mêmes erreurs à l'exception de la première. Son maintenant: Warning: fopen(sauvegarde/1354473988) [function.fopen]: failed to open stream: No such file or directory in
- J'ai remarqué que votre modifier. Vous ne pouvez pas le faire non plus. Il ne trouve pas le fichier parce que le nombre aléatoire ne cesse de changer. Vous devez enregistrer la variable aléatoire comme nom de fichier.
fopen()
doit tenter de créer le fichier si vous êtes de passage lew
mode argument, mais je pense qu'il peut échouer si le répertoire n'existe pas. (Voir ici.) Pourrait-il être le problème?- À l'aide d'un
do {} while ()
pourrait accomplir la tâche prévue. - Qu'est-ce que vous essayez d'atteindre ici, ajouter de l'aléatoire fichier qui a été créé? Si votre dossier n'a pas de droits d'écriture, vérifiez que trop.
Vous devez vous connecter pour publier un commentaire.
Selon votre question avant votre edit:
Depuis le fichier n'existe pas encore, votre
while
condition de ne pas travailler, et c'est pourquoi vous obtenez ces messages d'erreur.Et puisque vous êtes à l'aide d'un nombre aléatoire pour le fichier, vous ne saurez jamais quel fichier ouvrir en premier lieu. Il suffit de retirer le
while
boucle.Essayez ceci:
WHILE
condition. Êtes-vous essayer de vérifier si un fichier du même nom existe déjà avant de créer un nouveau fichier aléatoire? @user2898813 Si oui, alors vous aurez besoin de créer une fonction qui va enregistrer le nom de fichier d'un fichier journal dans le même temps, le nouveau fichier est créé, puis de vérifier d'abord pour voir s'il existe. Je l'ai guidée vous mieux si vous l'aurais posté ce que tu vient de me dire, dans votre question, au lieu de simplement les codes d'erreur.mt_rand
au lieu derand
pour obtenir un meilleur nombre aléatoire$random = mt_rand(1, 9999999999);
et il est plus rapide de la fonction. @user2898813À partir du code que vous avez, il ressemble à $emplacement existe uniquement à l'intérieur de la portée de la boucle while. Essayez
tout d'abord, vous devez définir les valeurs de votre
$location
variable ou depuis le fichier n'est pas encore créé, essayez ceci: