Ayant négligé une fois de plus l'aphorisme trop méconnu "If it works, don't fix it", j'ai tenté, bêtement, de changer de version de PHP sur ces pages hébergées chez Free. Le 5.6 étant disponible depuis 2015 (en beta à l'époque, certes), je me suis dit que je pouvais tenter le coup. Un petit remplacement de php 1
par php56 1
dans le .htaccess, et hop, ça ne pouvait que rouler. Ben non !
Je me suis retrouvé avec des problèmes d'encodage dans toutes mes pages .php, car le jeu de caractères par défaut est désormais l'utf8 (c'est écrit ici).
La solution "court terme" est de modifier toutes les pages .php en insérant les lignes suivantes en _tout début_ de fichier[1], avant la déclaration de doctype :
<?php header('Content-Type: text/html; charset=iso-8859-1'); ?> <!DOCTYPE html>
Long terme : tout passer en utf8, mais du coup il va falloir que je regarde les interactions avec ma base et mysql.
Accessoirement il va falloir que je remplace tous mes mysql_connect
désormais obsolètes par des mysqli_connect
...
Note
[1] il ne doit même pas y avoir de retour à la ligne ou d'espace
4 réactions
1 De Chag - 21/09/2019, 23:44
Tant qu'à faire, passe directement en php7 car le 5 finira par ne plus etre supporté non plus.
Ta ligne de header m'intrigue car je n'ai jamais besoin d'une telle ligne de mon côté. Le charset se définit dans une balise html.
Enfin, passe directement tout en utf8, il y a besoin de passer une moulinette et de changer l'encodage des tables. J'imagine que tu auras besoin de utf8_encode
N'hésite pas si tu as besoin
2 De Eric C. - 22/09/2019, 22:15
"Le charset se définit dans une balise html."
J'avais le bon charset défini dans la balise meta mais ça ne suffisait pas. Et si tu ne le définis pas en php dans les premières lignes, tu te retrouve avec un warning du genre " headers already sent" (et ça ne marche pas davantage)
3 De Eric C. - 22/09/2019, 22:17
cf https://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php
4 De Eric C. - 22/09/2019, 22:40
Pour PHP 7, c'est ce que je me suis dit aussi :) Tant qu'à faire, le jour où je passe tout en utf8 je fais les deux en même temps ... Mais d'après cette page http://les.pages.perso.chez.free.fr/migrations/php5v6.io, c'est seulement en alpha depuis quelques mois.