Avec le plugin Facteur 5.0.3 et sous SPIP 4.0.6, l'envoi d'identifiant de visiteur s'inscrivant depuis la partie publique bloque.
J'ai le messages suivant dans le log PHP :
thrown in (...)plugins/auto/facteur/v5.0.3/inc/envoyer_mail.php on line 60
[27-May-2022 20:20:22 UTC] PHP Fatal error: Uncaught TypeError: Argument 5 passed to inc_envoyer_mail() must be of the type string, null given, called in (...)/ecrire/inc/queue.php on line 283 and defined in (...)/plugins/auto/facteur/v5.0.3/inc/envoyer_mail.php:60
Stack trace:
#0 /(...)/ecrire/inc/queue.php(283): inc_envoyer_mail()
#1 /(...)/ecrire/inc/queue.php(409): queue_start_job()
#2 /(...)/ecrire/inc/genie.php(99): queue_schedule()
#3 /(...)/ecrire/inc/utils.php(1094): inc_genie_dist()
#4 /(...)/ecrire/inc/utils.php(1062): cron()
#5 /(...)/ecrire/public/aiguiller.php(77): action_cron()
#6 /(...)/ecrire/public.php(99): traiter_appels_actions()
#7 /(...)/spip.php(20): include('/home/users/lil...')
#8 {main}
Il s'agit de tâche périodique relancée (auteurs => bouton relancer les inscriptions).
Si l'on regarde la fonction incriminée : function inc_envoyer_mail($destinataire, string $sujet, $message, ****?string**** $from = '', string $headers = '')
Le cinquième argument a un point d'interrogation au lieu d'un $
Le problème ne doit donc pas se limiter à la relance des inscriptions...
Merci pour votre aide.
Thrax
Bonsoir,
Avec le plugin Facteur **5.0.3** et sous SPIP **4.0.6**, l'envoi d'identifiant de visiteur s'inscrivant depuis la partie publique bloque.
J'ai le messages suivant dans le log PHP :
```
thrown in (...)plugins/auto/facteur/v5.0.3/inc/envoyer_mail.php on line 60
[27-May-2022 20:20:22 UTC] PHP Fatal error: Uncaught TypeError: Argument 5 passed to inc_envoyer_mail() must be of the type string, null given, called in (...)/ecrire/inc/queue.php on line 283 and defined in (...)/plugins/auto/facteur/v5.0.3/inc/envoyer_mail.php:60
Stack trace:
#0 /(...)/ecrire/inc/queue.php(283): inc_envoyer_mail()
#1 /(...)/ecrire/inc/queue.php(409): queue_start_job()
#2 /(...)/ecrire/inc/genie.php(99): queue_schedule()
#3 /(...)/ecrire/inc/utils.php(1094): inc_genie_dist()
#4 /(...)/ecrire/inc/utils.php(1062): cron()
#5 /(...)/ecrire/public/aiguiller.php(77): action_cron()
#6 /(...)/ecrire/public.php(99): traiter_appels_actions()
#7 /(...)/spip.php(20): include('/home/users/lil...')
#8 {main}
```
Il s'agit de tâche périodique relancée (auteurs => bouton relancer les inscriptions).
Si l'on regarde la fonction incriminée :
`function inc_envoyer_mail($destinataire, string $sujet, $message, ****?string**** $from = '', string $headers = '')`
Le cinquième argument a un point d'interrogation au lieu d'un $
Le problème ne doit donc pas se limiter à la relance des inscriptions...
Merci pour votre aide.
Thrax
Le point d'interrogation est sur le 4ème argument là hein :)
Et c'est une syntaxe normale, c'est le type, ya pas à avoir de $ du tout
Le 5ème argument c'est $headers
PHP ? 8 ?
Le point d'interrogation est sur le 4ème argument là hein :)
Et c'est une syntaxe normale, c'est le type, ya pas à avoir de $ du tout
Le 5ème argument c'est $headers
PHP ? 8 ?
Non le mail test passe ; la graphie avec le point d'interrogation doit provenir d'une évolution du PHP que je ne connais pas.
Aucun problème avec Facteur.
Mais il faut regarder l'action relancer_inscription.
Ma version de PHP est PHP Version 7.4.29
Non le mail test passe ; la graphie avec le point d'interrogation doit provenir d'une évolution du PHP que je ne connais pas.
Aucun problème avec Facteur.
Mais il faut regarder l'action **relancer_inscription**.
Ma version de PHP est PHP Version 7.4.29
Si c'est le $headers, cela se joue dans l'appel de l'action inscrire_auteur (appelée par relancer_inscription) au niveau de ces lignes :
// charger de suite cette fonction, pour ses utilitaires
$envoyer_inscription = charger_fonction('envoyer_inscription', '');
list($sujet, $msg, $from, $head) = $envoyer_inscription($desc, $nom, $statut, $options);
$notifications = charger_fonction('notifications', 'inc');
notifications_envoyer_mails($mail_complet, $msg, $sujet, $from, $head);
Et la fonction envoyer_inscription renvoie un $head à null (ligne 252 : $head = null;)
Ceci dit, je ne comprends pas pourquoi cela pose problème. Il y aurait une différence entre $head = null; et $head = ''; ?
Si c'est le $headers, cela se joue dans l'appel de l'action `inscrire_auteur` (appelée par relancer_inscription) au niveau de ces lignes :
```
// charger de suite cette fonction, pour ses utilitaires
$envoyer_inscription = charger_fonction('envoyer_inscription', '');
list($sujet, $msg, $from, $head) = $envoyer_inscription($desc, $nom, $statut, $options);
$notifications = charger_fonction('notifications', 'inc');
notifications_envoyer_mails($mail_complet, $msg, $sujet, $from, $head);
```
Et la fonction **envoyer_inscription** renvoie un **$head** à null (ligne 252 : `$head = null;`)
Ceci dit, je ne comprends pas pourquoi cela pose problème. Il y aurait une différence entre `$head = null;` et `$head = '';` ?
bé oui c'est pour ça que je te demandais ta version de PHP :)
là c'est justement pas "?string" dans la déclaration du type attendu de l'argument mais "string" tout court, donc ça veut dire QUE string, pas "string ou null".
bé oui c'est pour ça que je te demandais ta version de PHP :)
là c'est justement pas "?string" dans la déclaration du type attendu de l'argument mais "string" tout court, donc ça veut dire QUE string, pas "string ou null".
Et donc à mon avis il faut mettre pareil que pour l'argument précédent, "?string". Je sais pas pourquoi celui là il a été mis à string tout court… Surtout si dans la nature ya des cas où ça renvoie null. Ou bien faut corriger le noyau aussi dans envoyer_inscription (donc faire un ticket noyau si on ajoute pas le "?").
Et donc à mon avis il faut mettre pareil que pour l'argument précédent, "?string". Je sais pas pourquoi celui là il a été mis à string tout court… Surtout si dans la nature ya des cas où ça renvoie null. Ou bien faut corriger le noyau aussi dans envoyer_inscription (donc faire un ticket noyau si on ajoute pas le "?").
Bonsoir,
Avec le plugin Facteur 5.0.3 et sous SPIP 4.0.6, l'envoi d'identifiant de visiteur s'inscrivant depuis la partie publique bloque.
J'ai le messages suivant dans le log PHP :
Il s'agit de tâche périodique relancée (auteurs => bouton relancer les inscriptions).
Si l'on regarde la fonction incriminée :
function inc_envoyer_mail($destinataire, string $sujet, $message, ****?string**** $from = '', string $headers = '')
Le cinquième argument a un point d'interrogation au lieu d'un $
Le problème ne doit donc pas se limiter à la relance des inscriptions...
Merci pour votre aide.
Thrax
Le point d'interrogation est sur le 4ème argument là hein :)
Et c'est une syntaxe normale, c'est le type, ya pas à avoir de $ du tout
Le 5ème argument c'est $headers
PHP ? 8 ?
Non le mail test passe ; la graphie avec le point d'interrogation doit provenir d'une évolution du PHP que je ne connais pas.
Aucun problème avec Facteur.
Mais il faut regarder l'action relancer_inscription.
Ma version de PHP est PHP Version 7.4.29
Si c'est le $headers, cela se joue dans l'appel de l'action
inscrire_auteur
(appelée par relancer_inscription) au niveau de ces lignes :Et la fonction envoyer_inscription renvoie un $head à null (ligne 252 :
$head = null;
)Ceci dit, je ne comprends pas pourquoi cela pose problème. Il y aurait une différence entre
$head = null;
et$head = '';
?il y a effectivement une différence car j'ai changé $head = null par $head = ''; et je n'ai plus d'erreur php.
Suis-je le seul a avoir ce problème ?
bé oui c'est pour ça que je te demandais ta version de PHP :)
là c'est justement pas "?string" dans la déclaration du type attendu de l'argument mais "string" tout court, donc ça veut dire QUE string, pas "string ou null".
Et donc à mon avis il faut mettre pareil que pour l'argument précédent, "?string". Je sais pas pourquoi celui là il a été mis à string tout court… Surtout si dans la nature ya des cas où ça renvoie null. Ou bien faut corriger le noyau aussi dans envoyer_inscription (donc faire un ticket noyau si on ajoute pas le "?").
ok. Tout compris. Merci. Je te laisse t'occuper du sacro saint core/corps, me sentant encore indigne de le toucher ?
(délire du soir)