Vous souhaitez prendre de l’avance dans votre planning en vous avançant dans vos brouillons, vous planifiez vos articles et autres backup et quelques jours plus tard… Vous vous apercevez qu’il n’y a rien eu du tout ! Votre WordPress ne sait plus planifier quoi que ce soit, en vous affichant une erreur « Planification manquée » par exemple…

Cette mésaventure m’est arrivée depuis de nombreuses semaines sur ce site web, j’ai recherché un peu partout sur le web et demandé sur Twitter (vous vous reconnaîtrez ;)) si quelqu’un avait eu ce genre de problème – Des réponses et des pistes, mais malheureusement aucune solution.

L’article ci-dessous a été effectué dans un serveur dédié – pour les connaisseurs, une infrastructure KVM dans Proxmox 4.4, sur une Debian 8.7 avec WordPress 4.7.2 et PHP 7.0.15 à l’heure de saisie.
Si vous utilisez un hébergement mutualisé, merci de vous référer au commentaire de « Darknote » (merci beaucoup !!)

Toutefois, voici les quelques pistes qui m’ont été donnés :

  • Problème d’autorisation sur les dossiers / fichiers de WordPress
    Tout votre dossier WordPress (inclus les sous-dossiers et les fichiers) doivent être sous la propriété de l’utilisateur de votre serveur web, par exemple « www-data » pour Apache, « nginx » pour Nginx et non l’utilisateur « root ».
  • Problème de droits
    Faites attention au CHMOD sur certains fichiers – Vous pouvez effectuer un « sudo chmod -R 0755 /emplacement/wordpress/* » pour corriger ce problème
  • Utiliser une extension pour forcer la planification
    J’ai essayé plusieurs extensions pour WordPress, malheureusement aucune n’a fonctionné – de plus, ces extensions ne s’occupent que de la planification des articles, pas de la planification des backup ou autre.
  • Régler l’heure, la date et le fuseau horaire sur le serveur web
    Erreur qui arrive si l’on ne prend pas le temps de bien régler son serveur avant de le mettre en production – installez « ntp » sous Linux pour pouvoir synchroniser l’heure et la date sur le bon fuseau horaire, et ce, de manière automatique. N’oubliez pas de lancer l’utilitaire au moins une fois pour effectuer la mise à jour de la date…
  • Régler l’heure, la date et le fuseau horaire dans WordPress
    Dans la partie « Réglages« , vous pouvez régler la date, l’heure et le fuseau horaire de votre site web – Utilisez strictement les mêmes paramètres que votre serveur web, sans quoi WordPress vous fera des misères…
  • Problème à cause d’une extension ou d’un thème
    Pour tous les tests, il est préférable de désactiver toutes les extensions ET tous les thèmes personnalisés.

La solution définitive

Enfin, il y a quelques jours, j’ai trouvé LA solution ultime pour corriger tous mes problèmes. Il s’agit d’un « hook » à effectuer dans le fichier « wp-config.php« .

Version courte

Ajoutez cette ligne de commande vers le milieu du fichier « wp-config.php », juste avant « /* bon blogging… */ » :

define('ALTERNATE_WP_CRON', true);

Redémarrez votre serveur web et le tour est joué !

Version longue

Si votre WordPress est « caché » derrière un routeur/pare-feu comme pfSense (plus d’informations à cette adresse), la planification manquée est due non pas à un problème sur la machine en tant que telle, mais provient de l’architecture réseau – Oui, ça se corse…
En somme, si WordPress n’arrive pas à exécuter à temps le fichier « wp-cron.php » pour lancer les tâches planifiées, le site web effectuera une action via HTTP pour envoyer les commandes quant à la requête planifiée.

Mais (parce qu’il y a toujours un « mais » dans une problématique) comme votre WordPress est derrière un routeur/pare-feu et que celui-ci bloque les requêtes de loopback, votre site web WordPress ne pourra donc pas s’envoyer des requêtes sur lui-même, puisqu’elles sont bloquées par votre routeur/pare-feu (dans mon cas, pfSense), sécurité oblige…

C’est pour cette raison qu’il faut alors saisir la ligne de commande « define(‘ALTERNATE_WP_CRON’, true); » dans le fichier « wp-config.php » de votre site, pour retrouver enfin vos planifications comme auparavant.

J’ai actuellement cette solution sur CZS et je peux de nouveau effectuer mes planifications d’articles d’une part, mais aussi et surtout les tâches de sauvegarde !! Parce que oui, je ne pouvais plus sauvegarder le site à cause de cette histoire…

Solution trouvée sur le support WordPress (lien)

Note d’un lecteur :

L’utilisation de ce tweak ajoute des variables récupérables via « GET » dans votre barre d’adresse du navigateur. Pour affiner la sécurité, il est primordial de réécrire l’URL pour empêcher des attaques. Sous Apache2, voici ce que vous devez saisir dans le « .htaccess » dans le dossier racine de votre site web :

Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)doing_wp_cron= [NC] RewriteRule (.*) /$1? [R=301,L]

Merci !

Share this post