[RESOLU] Erreur dans l'utilisation de le fonction file()

Eléphanteau du PHP | 29 Messages

31 juil. 2023, 19:10

Bonjour à tous.

Je démarre l'écriture d'un nouveau site dont la première fonction va être de lire un fichier de paramètres créé par ailleurs. J'utilise la dernière version de LAMP disponible pour Raspbian.

Je m'attendais à ce qu'il soit facile de la faire avec la fonction "file()", qui devrait me répondre un tableau constitué des lignes du fichier :

Code : Tout sélectionner

1 $fichier="chemin d'accès à mon fichier"; 2 $paramètres="truc, machin"; 3 $tableau=file($fichier,$paramètres);
J'obtiens une page blanche, et, en allant chercher la log, je vois un message qui me dit qu'il est impossible d'écrire dans ce contexte (c'est en anglais, hein).

Alors je me pose la question : fallait-il déclarer "$tableau". J'ai essayé array $tableau;, mais ça ne marche pas...

Alors merci à qui pourra me dépanner...

AMIcalement.

Mammouth du PHP | 2581 Messages

31 juil. 2023, 23:22

c'est bien d'être allé chercher le message d'erreur, mais encore mieux de nous le donner.

Mammouth du PHP | 1949 Messages

01 août 2023, 08:48

lis aussi la doc de lafonction file, ton 2eme paramètre n'est pas bon
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 29 Messages

01 août 2023, 12:15

@Or 1 : je ne me suis pas contenté de retrouver le message d'erreur, j'ai cherché à comprendre ce qu'il voulait dire, de sorte que ceux qui veulent bien me répondre (qu'ils soient remerciés !) n'apprendront rien de plus : l'accès que j'ai à l'ordinateur en question ne me permet pas de copier/coller, mais je recopie le message :

"PHP Fatal error : Can't use function return value in write context."

@Spols
Pour la même raison que ci-dessus, je ne peux pas recopier... mias, pour écrire mon programme, j'avais recopié les lignes ad hoc de la doc PHP, et j'ai mal transcrit cette ligne pour mon message : dans mon programme, ce n'est pas du texte, mais la variable $flags à laquelle j'avais donné la valeur :
$flags=FILE_IGNORE_NEWLINE = FILE8_SKIP_EMPTY_LINES + FILE_NO_DEFAULT_CONTEXT.
Il y avait en fait un troisième paramètre : $contextt=null.

Je me demandais si l'erreur ne provenait pas de ce que je n'avais pas déclaré la variable "cible" $fichier comme un tableau, mais il semble que non. D'ailleurs, il n'est pas possible de connaître le nombre de lignes avant d'avoir lu le fichier.

Merci de votre aide, mais je n'ai pas avancé d'un pouce...

AMIcalement.

ynx
Mammouth du PHP | 578 Messages

01 août 2023, 13:35

Bonjour,

Peux tu nous montrer le code (ou un exemple reproductible) qui produit cette erreur ?

Eléphanteau du PHP | 29 Messages

01 août 2023, 15:05

Voici le code :

Code : Tout sélectionner

<?php //Lecture du fichier "fichier.txt" et création des variables php $filename="/var/www/rpi-b1/fichier.txt"; $flags=FILE_IGNORE_NEW_LINES + FILE_SKIP_EMPTY_LINES + FILE_NO_DEFAULT_CONTEXT; array $fichier=file($filename, $flags, $context = null);
L'erreur apparait sur la dernière ligne ci-dessus (dans le contexte où l'erreur est apparue, le mot "array" n'avait pas encore été ajouté - mais ça n'a rien changé).

Mais j'ai du mal à voir ce que vous apprendrez de plus...

Mais merci de vous intéresser à mon problème.

AMIcalement.

ynx
Mammouth du PHP | 578 Messages

01 août 2023, 16:23

L'ajout du mot clé array doit déclencher une erreur de syntaxe car tu peux pas définir le type de la variable comme ceci.

Sans le mot clé array, ton code fonctionne correctement de mon coté et je ne rencontre pas l'erreur "Can't use function return value in write context".
La ligne indiqué dans le message d'erreur correspond bien à la ligne 5 dans ton extrait ? Quelle est la version de PHP utilisée ?

Eléphanteau du PHP | 29 Messages

01 août 2023, 16:59

Je suis en php 7.4, et oui, c'est bien la 5ème ligne.

Comme dit plus haut, le premier jet de mon programme ne comportait pas le mot "array", je l'ai ajouté quand j'ai eu l'erreur.

Je suis en php 7.4 sur raspbian tout neuf, sur un antique Raspberry Pi B2, et c'est la première fois que tous ces logiciels tournent. Ça augure mal de l'avenir...

Je n'ai aucune idée de recherche, surtout si ça marche ailleurs. Question de configuration de PHP ?

AMIcalement.

Mammouth du PHP | 2581 Messages

01 août 2023, 17:46

cela remet bien l'erreur "Can't use function return value in write context" à chaque fois que vous rechargez le script ????????????????????????????

Eléphanteau du PHP | 29 Messages

02 août 2023, 09:53

En fait, j'ai renoncé (provisoirement) à cette méthode : j'ai remplacé mon "fichier.txt", prétendument créé par un programme externe, par "fichier.php", toujours généré par ailleurs, et d'un format un peu différent (évidemment !), et là, ça marche.

Alors, le problème n'est pas résolu, mais il n'est plus bloquant.

Et je n'ai pas de doute que je reviendrai bientôt, avec un autre problème...

A bientôt, et merci.

AMIcalement.

Eléphanteau du PHP | 29 Messages

05 août 2023, 09:45

Bonjour à tous.

Je fais mes excuses au groupe : hier, j'ai effacé la marque "Résolu", car je voulais poser un nouveau problème, et, en le décrivant, je me suis aperçu que c'était une grossière erreur de ma part. J'ai donc effacé mon nouveau message, mais j'ai oublié de remettre la marque "Résolu".

Voilà, c'est corrigé.

AMIcalement.