Solution pour l'erreur 400 (bad request) lors d'un  renouvellement de certificat Let's Encrypt sous Plesk photo

Plesk : corriger l’erreur 400 Let’s Encrypt au renouvellement SSL

Lors du renouvellement d’un certificat Let’s Encrypt sous Plesk, il peut arriver que la validation échoue avec une erreur 400 Bad Request. Le message ressemble souvent à ceci :

Attempting to renew cert (example.com) from /etc/letsencrypt/renewal/example.com.conf produced an unexpected error:

Failed authorization procedure.

www.example.com (http-01):
urn:ietf:params:acme:error:unauthorized ::
The client lacks sufficient authorization ::
Invalid response from
http://www.example.com/.well-known/acme-challenge/2VQAX5eA_dSyl1RB5MjfcHr9YinF8T7nw3Z6OxU5Zu4:

"<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>"Langage du code : PHP (php)

En clair, Let’s Encrypt essaye de lire un fichier de validation dans /.well-known/acme-challenge/, mais le serveur ne renvoie pas le token attendu. À la place, il renvoie une page d’erreur 400 Bad Request.

Ce n’est donc pas un problème “SSL” au sens strict. C’est d’abord un problème d’accès HTTP au fichier de challenge ACME.

Comprendre le challenge HTTP-01 de Let’s Encrypt

Lorsque Plesk demande ou renouvelle un certificat Let’s Encrypt avec le challenge HTTP-01, l’autorité de certification vérifie que le serveur répond bien sur le domaine demandé.

Pour cela, elle tente d’accéder à une URL du type :

http://example.com/.well-known/acme-challenge/TOKENLangage du code : JavaScript (javascript)

Le fichier doit être accessible publiquement sur le port 80. Let’s Encrypt précise que le challenge HTTP-01 nécessite le trafic entrant sur le port 80, et que les IP de validation ne sont pas publiées car elles peuvent changer.

Let’s Encrypt suit les redirections HTTP, jusqu’à 10 redirections, mais uniquement vers http ou https sur les ports 80 ou 443. En revanche, si une redirection crée une boucle, pointe vers un hôte incorrect, casse le Host header, passe par un proxy mal configuré, ou renvoie une page 400, la validation échoue.

Dans Plesk, cette validation est généralement gérée par l’extension Let’s Encrypt / SSL It!. Plesk peut renouveler automatiquement les certificats, mais seulement si le domaine reste accessible de l’extérieur pendant la validation.

Lire la suite

Le logo de MySQL représente le contour minimaliste d'un dauphin sautant au-dessus du mot "MySQL". Le mot "My" est en bleu et le mot "SQL" en orange, le tout dans une police de caractères moderne et arrondie. Le dauphin symbolise la vitesse et la fiabilité lors des opérations sur les tables.

PHP/MySQL : corriger l’erreur « Headers and client library mismatch »

Après une mise à jour de MySQL, MariaDB, PHP ou des extensions PHP, certaines applications anciennes peuvent afficher un avertissement de ce type :

PHP Warning: mysql_connect(): Headers and client library minor version mismatch.
Headers:50535 Library:50617Langage du code : CSS (css)

Ce message indique que l’extension PHP utilisée pour se connecter à MySQL a été compilée avec une version de headers différente de la bibliothèque cliente réellement chargée au moment de l’exécution.

En 2026, le point important est surtout celui-ci : si votre application utilise encore mysql_connect(), le problème n’est pas seulement une bibliothèque MySQL incohérente. Le vrai problème, c’est que le code utilise une API PHP supprimée depuis longtemps.

La correction moderne consiste donc à passer à mysqli ou PDO_MySQL, puis à vérifier que PHP utilise bien MySQL Native Driver, aussi appelé mysqlnd.

Pourquoi cette erreur apparaît ?

Historiquement, les extensions PHP de connexion à MySQL pouvaient utiliser la bibliothèque cliente MySQL, souvent appelée libmysqlclient. Si PHP était compilé contre une version, mais chargeait une autre version au runtime, l’avertissement Headers and client library minor version mismatch pouvait apparaître.

Ce problème concernait surtout les anciens environnements PHP 5.x, les mélanges de dépôts, les upgrades MySQL/MariaDB partiels, les paquets tiers, ou les serveurs qui avaient plusieurs versions de bibliothèques MySQL installées.

En 2026, sur une pile PHP moderne, la bonne réponse n’est pas de bricoler libmysqlclient. PHP fournit depuis longtemps MySQL Native Driver, mysqlnd, qui remplace l’ancienne bibliothèque cliente MySQL pour les extensions PHP MySQL. Le manuel PHP précise que mysqlnd est un remplacement de MySQL Client Library et qu’il fait partie des sources officielles de PHP depuis PHP 5.3.0.

Lire la suite

Une tasse de café noir est posée sur une soucoupe à côté d'un ordinateur portable argenté sur un bureau blanc. À gauche, un texte indique : "Enlever la barre de défilement horizontale avec CSS", en surlignant "barre de défilement horizontale" en bleu - parfait pour la compatibilité avec IE.

CSS : supprimer une barre de défilement horizontale indésirable

Une barre de défilement horizontale qui apparaît sans raison apparente, c’est l’un des petits bugs CSS les plus agaçants. Le site semble presque correct, puis l’on remarque que la page peut glisser de quelques pixels vers la droite. Super. Une feature que personne n’a demandée.

Historiquement, on réglait souvent ce problème avec une règle brutale :

html {
    overflow-x: hidden;
}Langage du code : CSS (css)

Cette règle masque bien la barre de défilement horizontale. Toutefois, elle ne corrige pas forcément la cause du problème. Aujourd’hui, la bonne approche consiste plutôt à identifier l’élément qui déborde, corriger sa largeur, puis utiliser overflow-x seulement en dernier recours.

Pourquoi une barre de défilement horizontale apparaît ?

Une barre horizontale apparaît lorsqu’un élément dépasse la largeur du viewport ou de son conteneur. Le navigateur fait alors son travail : il ajoute un scroll horizontal pour permettre d’accéder au contenu qui déborde.

Les causes les plus fréquentes sont :

  • un élément en width: 100vw combiné à du padding ou à une scrollbar verticale ;
  • une image, une vidéo ou un iframe sans max-width: 100% ;
  • un conteneur en width: 100% avec padding sans box-sizing: border-box ;
  • une grille CSS trop large ;
  • un élément flex qui refuse de rétrécir ;
  • un mot, une URL ou un bloc de code trop long ;
  • un élément positionné avec left, right, transform ou une marge négative ;
  • une animation qui sort temporairement du viewport ;
  • un bloc WordPress aligné en pleine largeur mal contenu par le thème.

La tentation consiste à masquer le débordement. Parfois, c’est acceptable. Mais dans la plupart des cas, il vaut mieux trouver l’élément fautif. Sinon, vous cachez la fumée pendant que le grille-pain continue de brûler.

Lire la suite