Skip to content

Bug si date du serveur php différente du serveur mysql

Dans le cas où l'on a décidé que les articles n'étaient pas publiés tant qu'ils étaient dans le futur, on peut rencontrer le problème suivant :

  • serveur web réglé sur la date/heure T
  • serveur mysql réglé sur la date/heure T+2 minutes (c'est le cas des plan 240 d'OVH en ce moment).
  • ecriture d'un article, passage en publication : mytérieusement, il est toujours en prévisualisation.
  • attendre 2 minutes : il peut être vu en ligne

Analyse rapide du code :

  • dans inc/rubriques.php, on a :
	// Afficher les articles post-dates ?
	include_spip('inc/meta');
	$postdates = ($GLOBALS['meta'][[post_dates]] == "non") ?
		"AND fille.date <= NOW()" : _;

==> Date prise dans [[MySQL]]

  • action/editer_article.php, on a :
		// En cas de publication, fixer la date a "maintenant"
		// sauf si $c commande autre chose
		if ($champs['statut'] == 'publie') {
			if ($d = _request('date', $c))
				$champs['date'] = $d;
			else
				$champs['date'] = date('Y-m-d H:i:s');
		}

==> Date prise dans php

Solution : prendre la date dans [[MySQL]] ou dans php de manière cohérente partout, mais pas l'un ou l'autre.