Synology PHP - Migration vers DSM7

Valeriane

Apprenti
6 Février 2023
35
6
8
Bonjour,

Je viens d'effectuer plusieurs migrations :
Mariadb5 --> Mariadb10
PHP7 --> PHP8
DSM6 --> DSM7

PHP8 n'envoi plus les mails. Donc, je voulais aller dans le paramétrage de Php où l'on avait accès aux extensions, et aux variables. Il me semblait que c'était dans la Web Station, je retrouve bien les versions de PHP mais je n'ai plus de bouton Modifier, qui proposait plusieurs onglets, j'ai seulement un accès à Gestion mais qui m'affiche la page d'installation.

Si quelqu'un pouvait me guider,

Merci de votre aide,
 
Je viens de trouver, c'est dans les profiles.
Si quelqu'un sait quels sont les paramètres à modifier pour envoyer les mails, merci de votre aide
 
Hi Cooper,
J'ai ajouté une adresse mail du domaine dans la variable "Send mail from" de PHP (accessible via la Web Station / Paramètres du langage script)
 
  • J'aime
Réactions: MilesTEG
Bonjour,
En fait c'est pas résolu pour les mails !
Je reçois le mail, j'ai l'objet mais pas le message (le mail est vide).
Ca fonctionnait très bien en PHP7.
Voici le code simplifié que j'utilise pour mon test :

$message="mon message mail à envoyer";
$from = "contact@societe.com";
$to = "valeriane@societe.com";
$subject = "test mail";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

$headers .= 'From: '.$from."\r\n".
'Reply-To: '.$from."\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to,$subject,$message, $headers);

Une idée ?
 
Bonjour,

Je viens de migrer de PHP 7 à PHP 8 et depuis mes mail envoyés depuis php ont un contenu vide.
Je reçois bien le mail, j'ai l'objet mais pas de message.
Je suis revenu en PHP 7.4 et là tout va bien. Je précise que j'ai utilisé un mail de test réduit au plus simple comme entre autres :
$message="mon message mail à envoyer";
$from = "contact@xxx.com";
$to = "vi@yyy.com";
$subject = "titre message";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=UTF-8" . "\r\n";
$headers .= "From: ".$from."\r\n".
"Reply-To: ".$from."\r\n" .
"X-Mailer: PHP/" . phpversion();
mail($to,$subject,$message, $headers);
Avez-vous rencontré ce problème ? Il y a-t-il un changement du php.ini à faire ?
Merci de vos retours,
Message automatiquement fusionné :

Désolée, je ne suis pas sur le bon sujet de nas !
 
$message="mon message mail à envoyer";
$from = "contact@societe.com";
$to = "valeriane@societe.com";
$subject = "test mail";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";

$headers .= 'From: '.$from."\r\n".
'Reply-To: '.$from."\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to,$subject,$message, $headers);

Il te manque un <CRLF> dans la valeur de $message ;)

PHP:
<?php
    $message = "mon message mail à envoyer\r\n";
    $from = "contact@societe.com";
    $to = "valeriane@societe.com";
    $subject = "test mail";
    
    $headers = "MIME-Version: 1.0 \r\n";
    $headers .= "Content-type: text/html; charset=utf-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= "From: $from\r\n";
    $headers .= "Reply-To: $from\r\n";
    $headers .= "X-Mailer: PHP/" . phpversion();
    
    mail($to, $subject, $message, $headers);
?>
 
Bonjour Cooper,

J'ai fait un copier/coller de ton code en modifiant bien sûr les adresses. Je reçois bien le mail avec un objet mais toujours pas le contenu du mail.
Tout fonctionne bien en PHP7 mais PHP8 ne veut rien savoir.
Tu es en PHP8 toi aussi ?
 
Bonjour Cooper,

Hello @Valeriane,

J'ai fait un copier/coller de ton code en modifiant bien sûr les adresses. Je reçois bien le mail avec un objet mais toujours pas le contenu du mail.
Tout fonctionne bien en PHP7 mais PHP8 ne veut rien savoir.

Le code indiqué dans mon précédent message fonctionne aussi bien en php7.x que 8.x

Tu es en PHP8 toi aussi ?

Sur tous mes serveurs (Nas inclus) oui.
 
En réfléchissant à ton problème, avec quel éditeur texte tapes-tu ton code PHP car le fait que le courriel est envoyé et reçu indique des caractères de fins de ligne invisibles que l'éditeur texte insère (les éditeurs textes sur Windows et Mac OS X font souvent cela).
 
En réfléchissant à ton problème, avec quel éditeur texte tapes-tu ton code PHP car le fait que le courriel est envoyé et reçu indique des caractères de fins de ligne invisibles que l'éditeur texte insère (les éditeurs textes sur Windows et Mac OS X font souvent cela).
Ce dont tu parles c’est les caractères CRLF de Windows.
Macos et Linux utilisent du CR tout court.
Pour changer ces caractères de fin de ligne , il faut utiliser un éditeur qui le fait comme VSCode ou Notepad++ sous Windows.
 
Ce dont tu parles c’est les caractères CRLF de Windows.
Macos et Linux utilisent du CR tout court.

Historiquement (et encore à ce jour) :
GNU/Linux ou *BSD ce sont des lines feeding (<LF>) tout court ;)
Mac OS X (ou la nouvelle dénomination "macOS") utilise encore du carriage return (<CR>).

Pour Windows venu bien après tout ce beau monde ne s'est pas embêté en utilisant un non sens qui est de définir 2 fins de ligne (<CRLF>), laissant le soin aux autres de se démerder à démêler cette incongruité qu'est son délimiteur de fin de ligne.

Pour changer ces caractères de fin de ligne , il faut utiliser un éditeur qui le fait comme VSCode ou Notepad++ sous Windows.

Raison pour laquelle je demandais à @Valeriane avec quel éditeur texte il écrivait son code ;)
 
  • J'aime
Réactions: jeu2
En réfléchissant à ton problème, avec quel éditeur texte tapes-tu ton code PHP car le fait que le courriel est envoyé et reçu indique des caractères de fins de ligne invisibles que l'éditeur texte insère (les éditeurs textes sur Windows et Mac OS X font souvent cela).

Historiquement (et encore à ce jour) :
GNU/Linux ou *BSD ce sont des lines feeding (<LF>) tout court ;)
Mac OS X (ou la nouvelle dénomination "macOS") utilise encore du carriage return (<CR>).
Ha je ne savais pas ça !
Comment je vérifie comment est fait ces fins de lignes avec macOS ?
 
Ha je ne savais pas ça !
Comment je vérifie comment est fait ces fins de lignes avec macOS ?

Alors pour macOS, il faut aussi noter une petite distinction : certains frameworks hérités de Mac OS Classic (donc <10.0) et encore utilisés par certaines applications graphiques continuent d'utiliser <CR> comme délimiteur de fin de ligne (généralement des éditeurs texte ayant existés avant Mac OS X et qui ont continué leur bonhomme de chemin sur Mac OS X).

Pour détecter quel délimiteur de fin de ligne est utilisé par un fichier, on peut utiliser par exemple vim(1) de cette façon : vim -b +'set list' <fichier>

Les fins de ligne <LF> (utilisées sur GNU/Linux, *BSD, SysV, et consorts) s'afficheront avec $ là où <CR>/<CRLF> sera affiché avec ^M$

Exemple avec des fins de ligne <CR> :
Code:
1 test^Mencore^Mtoujours^M$
~
~
~
"Desktop/cr.txt" [noeol] 1L, 21C                              1,1           All

Fins de ligne <CRLF> :
Code:
1 test^M$
2 encore^M$
3 toujours^M$
~
~
~
"Desktop/crlf.txt" 3L, 24C                                    1,1           All

Fins de ligne <LF> :
Code:
1 test$
2 encore$
3 toujours$
~
~
~
"Desktop/lf.txt" 3L, 21C                                      1,1           All

L'on peut également utiliser file(1) (qui s'appuie sur magic.mime sur Unix) : file -b <fichier>

Exemples :
Bash:
<user>@<redacted>:~ % file -b Desktop/crlf.txt
ASCII text, with CRLF line terminators
<user>@<redacted>:~ % file -b Desktop/cr.txt
ASCII text, with CR line terminators
<user>@<redacted>:~ % file -b Desktop/lf.txt
ASCII text
 
Dernière édition:
  • J'aime
Réactions: MilesTEG
Alors pour macOS, il faut aussi noter une petite distinction : certains frameworks hérités de Mac OS Classic (donc <10.0) et encore utilisés par certaines applications graphiques continuent d'utiliser <CR> comme délimiteur de fin de ligne (généralement des éditeurs texte ayant existés avant Mac OS X et qui ont continué leur bonhomme de chemin sur Mac OS X).

Pour détecter quel délimiteur de fin de ligne est utilisé par un fichier, on peut utiliser par exemple vim(1) de cette façon : vim -b +'set list' <fichier>

Les fins de ligne <LF> (utilisées sur GNU/Linux, *BSD, SysV, et consorts) s'afficheront avec $ là où <CR>/<CRLF> sera affiché avec ^M$

Exemple avec des fins de ligne <CR> :
Code:
1 test^Mencore^Mtoujours^M$
~
~
~
"Desktop/cr.txt" [noeol] 1L, 21C                              1,1           All

Fins de ligne <CRLF> :
Code:
1 test^M$
2 encore^M$
3 toujours^M$
~
~
~
"Desktop/crlf.txt" 3L, 24C                                    1,1           All

Fins de ligne <LF> :
Code:
1 test$
2 encore$
3 toujours$
~
~
~
"Desktop/lf.txt" 3L, 21C                                      1,1           All

L'on peut également utiliser file(1) (qui s'appuie sur magic.mime sur Unix) : file -b <fichier>

Exemples :
Bash:
<user>@<redacted>:~ % file -b Desktop/crlf.txt
ASCII text, with CRLF line terminators
<user>@<redacted>:~ % file -b Desktop/cr.txt
ASCII text, with CR line terminators
<user>@<redacted>:~ % file -b Desktop/lf.txt
ASCII text
Intéressant @cooper , je testerais sur un fichier text crée en ligne de commande.
Je suis sous macOS Ventura.

Mais en général j’utilise vscode et sur mon mac je crois que par défaut il est en LF tout court.
 
Je suis sous macOS Ventura.

Avec l'abandon du code 32 bits depuis macOS 10.15 (Catalina dans le jargon Appleonien) et donc de CarbonLib, tout est <LF> dorénavant (enfin si je puis dire car sous NeXTSTEP, sur qui repose en partie Mac OS X et macOS, <LF> était utilisé).

Mais en général j’utilise vscode et sur mon mac je crois que par défaut il est en LF tout court.

Il y a de bien meilleurs éditeurs texte sur un Un*x ;)
J'utilise depuis mes premiers jours sur Mac début des années 2000 TextMate lorsque j'ai besoin d'un éditeur graphique sur Mac OS X et à l'époque c'était le seul à gérer correctement les fins de lignes (les autres s'emmêlant joyeusement et sournoisement les pinceaux sur les questions d'encodage et fins de ligne).
 
J'utilise depuis mes premiers jours sur Mac début des années 2000 TextMate lorsque j'ai besoin d'un éditeur graphique sur Mac OS X et à l'époque c'était le seul à gérer correctement les fins de lignes (les autres s'emmêlant joyeusement et sournoisement les pinceaux sur les questions d'encodage et fins de ligne).
C'est pas payant Textmate ?
J'ai pris mes habitudes avec VScode, et les paramètres/extentions sont synchronisés avec mon PC windows (pour quand je m'en sers).
 
C'est pas payant Textmate ?

Oui. Après avec tout ce qu'il inclut le coût est justifié (ma licence date de 2004 ou 2005).

J'ai pris mes habitudes avec VScode, et les paramètres/extentions sont synchronisés avec mon PC windows (pour quand je m'en sers).

Du moment que tu as tes habitudes, le meilleur outil est celui que l'on connaît ;)
 
  • J'aime
Réactions: MilesTEG
Oui. Après avec tout ce qu'il inclut le coût est justifié (ma licence date de 2004 ou 2005).



Du moment que tu as tes habitudes, le meilleur outil est celui que l'on connaît ;)
C’est surtout les extensions ou plugins que j’apprécie beaucoup : je peux faire du debuggage de script bash ou powershell avec que ce soit sous Windows ou macOS.
Dans parler de toutes les autres possibilités.
 
  • J'aime
Réactions: cooper