Aller au contenu
Support de Zwii
  • 0
wilo

Contenu du site disparaît lors de la sauvegarde automatique

Question

Salut la communauté,

je viens de découvrir un bug assez embêtant sur la version 8.0.1 de Zwii.

Ca m'est arrivé 2 fois maintenant et la première fois je m'en suis rendu compte lorsque j'ai remarqué que mon site avant disparu des indexes de Google. Lors de la sauvegarde automatique, le fichier data.json ce vide totalement et contient uniquement encore :

{"core":{"lastClearTmp":1491516000,"lastBackup":1491516000}}

Le plus embêtant c'est que ça ne se produit pas à chaque fois et aujourd'hui ça m'est arrivé après 3h de boulot donc pas de sauvegardes.

Partager ce message


Lien à poster
Partager sur d’autres sites

8 réponses à cette question

Messages recommandés

  • 0

Hello !

Tu utilises quel hébergeur ?

Sinon, je pense qu'il s'agit d'un problème de lecture du fichier site/data/data.json. Le CMS n'arrive pas à lire le fichier, retourne un tableau vide et continue l’exécution du CMS.

Pour palier au problème je vais ajouter un test après la lecture du fichier : 3 essais de lecture puis si le CMS n'y arrive toujours pas après 3 tentatives je le ferais planter avec un message d'erreur pour éviter la corruption des données.

Je vais voir pour sortir une version 8.0.2 ce soir avec le correctif :).

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Invité

Mince , c'est vrai que c'est un bug gênant !!! et ouf Rémi est là pour arriver à las rescousse ( effectivement Wilo ta version est une version officielle )

@Wilo , juste une question , as tu essayé avant la sauvegarde mais dans la version V8.0.0 ?

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Non mais je pense que le problème n'a aucun rapport avec le CMS, c'est comme le pb de data.json avec la 7.8, j'ai l'impression que de temps en temps le serveur n'arrive pas à lire le fichier json et plante le cms :/.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

@Rémi Alors pour l'hébergeur je suis chez OVH mais pas sur un mutualisé, je loue un VPS sous Ubuntu Server avec une installation "maison" d'Apache, php et MySQL. C'est effectivement possible qu'il s'agisse d'un problème de droits mais j'avais écarté cette possiblité car j'ai fait un test en mettant tout un site avec comme droit 777 et le problème est le même.

Pour l'instant j'ai désactiver la sauvegarde automatique et je rapatrie à chaque mise à jour "majeure" que je fais le dossier site en local pour sauvegarde, ça fonctionne aussi comme ça.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Invité
il y a 9 minutes, wilo a dit :

je rapatrie à chaque mise à jour "majeure" que je fais le dossier site en local pour sauvegarde, ça fonctionne aussi comme ça.

:D comme je l'ai écrit quelque part dans le forum il y a peu , les solutions à l’ancienne sont bien souvent salvatrices pour peu que nous y pensions à temps .

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

@wilo j'ai un bbq ce soir donc je n'aurais peut-être pas le temps de coder et d'envoyer en production le correctif mais il sera là ce week-end samedi ou dimanche certain.

Sinon en attendant tu peux faire ça dans core/core.php ligne 336 entre le commentaire "Import des données" et "Utilisateur connecté" tu supprimes les lignes et met le code ci-dessous à la place (ça devrait marcher mais n'hésite pas à faire des sauvegardes en attendant d'avoir confirmation) :

// Import des données
if($this->data === []) {
	// Trois tentatives
	for($i = 0; $i < 3; $i++) {
		$this->setData([json_decode(file_get_contents('site/data/data.json'), true)]);
		if($this->data) {
			break;
		}
		elseif($i === 2) {
			exit('Unable to read data file.');
		}
		// Pause de 10 millisecondes
		usleep(10000);
	}
}

En gros il va essayer d'ouvrir 3 fois le fichier, à la troisième fois si il y arrive pas il écrit un message d'erreur et plante le CMS :D .

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

ouaou @Rémi y a pas d'urgence, ne te mets pas la pression pour ça. J'vais appliquer ce code lundi, je serais absent ce week-end.

En tout cas merci beaucoup, t'es un chef ;-)

Partager ce message


Lien à poster
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à cette question…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


  • Contenu similaire

    • Par Dreg
      Bonjour à tous !
      Je constate que :
      Les sauvegardes automatiques sont stockées dans site/backup. Les sauvegardes manuelles dans site/file/source/backup. Le fait de séparer les sauvegardes a-t-il un but particulier ?
      Dominique
    • Par roger
      Bonjour;
      Depuis hier matin j'ai décidé d'essayer d'importer puis mettre en application les thémes disponibles dans la section "téléchargement"; j'ai donc téléchargé le thème sombre de @sylvainlelievre puis ai voulu l'appliquer à la dernière version du cms disponible pour tous.
      ==>  la version utilisée: 10.3.03
      ==>  log de journalisation joint ici : 
      site_data_journal.log
       
      Je me suis aperçus qu'un "gros problème" existait et ce à deux endroits dans l'utilisation de la sauvegarde et la restauration de thème dans le Zwii:
       
      - Le premier endroit (celui où c'est moins grave) concerne la restauration d'un theme sauvegardé lorsque l'on veut le réinjecter dans le zwii (si l'on est pas satisfait de notre thème modifié)
             ==> Quand on sélectionne un thème dans le dossier "theme" du RFM pour qu'il soit restauré en lieu et place du thème utilisé, celui ci est bien "réinstallé" dans le zwii mais génère une alerte et surtout n'efface pas dans le dossier "tmp" le thème qui y a été décompressé ce qui fait que cela occupe inutilement de la place sur le serveur pour ceux qui sont limités en nb de dossiers/fichiers chez leur FAI.
      Seule solution alors, supprimer manuellement les dossiers pour gagner de la place car ils sont devenus inutiles à cet endroit. (9 images commentées)
      1

      2

      3

      4

      5

      6

       
      7 ce sont les dossiers temporaires qui ne sont pas effacés ensuite par le script

      8

       
      9 donc pas le choix il faut..

       
      ###############################
       
      - Plus grave, cela concerne la restauration d'un theme admininistratif dans un zwii. Elle ne fonctionne pas du tout.
        ==> la sauvegarde du thème admin fonctionne.
       ===> la restauration du thème elle mène systématiquement à un échec car elle considère que le theme admin sélectionné n'est pas une archive de thème!!!
      12
       
      3
       
      Donc pour les besoins de ce test j'avais 'massacré" mon interface admin comme cela (heureusement que je sais comment revenir à l'interface admin d'origine) et si on ne peut pas restaurer l'interface admin comme on restaurerait un thème normal...cela peut poser problème pour "ceux qui ne savent pas restaurer un thème manuellement"
       

       

    • Par sylvainlelievre
      Bonjour,
      Voici un module de recherche qui exploite le fichier data.json d'un site ZWII (testé sous 8.5.9) pour chercher des occurences dans toutes les pages du site.
      Il est constitué d'un seul fichier php et agrémenté d'une image de fond pour le rendu.
      Plus de détails dans l'entête du fichier recherche.php
      Vous aurez un aperçu du rendu en allant sur la page d'accueil du site https://www.halteauxmareesvertes.org   (bas de page)
       
      <!-- Recherche des pages contenant un mot ou une phrase clef à partir du fichier data.json Une portion du texte contenant le mot ou la phrase clef est affichée pour chaque occurence rencontrée Le nombre d'occurence dans une page est indiqué. Dans le mot ou la phrase clef la casse est indifférente, les accents sont pris en compte. Testé avec ZWII 8.5.9 Sont à regrouper dans un dossier ce fichier recherche.php, loupe.jpg, data.json (une copie de votre data.json) et un .htaccess Un formulaire POST placé dans une des pages ZWII pointe sur ce fichier <form action="/....../recherche.php" method="post">Recherche : <input name="motclef" size="10" type="text" /> <input type="submit" value="valider" /></form> --> <head> <title>Recherche</title> <link rel="stylesheet" href="/site/data/theme.css"> <link rel="stylesheet" href="/site/data/custom.css"> </head> <body style="background-image:url(loupe.jpg);"> <?php //Déclaration de la fonction nettoyer(string $contenu) : string //Supprime de $contenu les caractères placés entre < et >, donc les balises html comme <p> <br/> etc... //Retourne $contenu nettoyée function nettoyer_html($contenu) { do { $pos1=strpos($contenu,chr(60)); if($pos1!==false) { $pos2=strpos($contenu,chr(62)); if($pos2!==false) $contenu=substr_replace($contenu," ",$pos1,($pos2 - $pos1 + 1)); } } while($pos1!==false); return $contenu; } // Récupération de l'ensemble des données d'un site ZWII 8.x.x // On utilise une copie du fichier data.json, manuelle car avec .htaccess impossible d'utiliser copy // Lire le fichier json $json_source = file_get_contents('data.json'); // Décoder le JSON en un array $array = json_decode($json_source,true); // Récupération du mot clef passé par form avec caractères accentués $motclef=$_POST['motclef']; echo '<h1>R&eacute;sultats de la recherche avec le mot clef : '.$motclef.'<br/></h1>'; if ($motclef!="" && strlen($motclef)>2) { foreach ($array as $key1 => $value1) { // Déterminer le chemin de tous les contenus (content) dans page ou module if (($key1=='page' || $key1=='module') && is_array($value1) ) { foreach ($value1 as $key2 => $value2) { if (is_array($value2)) { foreach ($value2 as $key3 => $value3) { if ($key3=="content" && is_string($value3)) { // compte le nombre d'occurences dans la page $nboccu=0; // le contenu à explorer est dans $value3, le nom de la page est $key2 //Nettoyage de $value3 : on enlève tout ce qui est inclus entre < et > $value3=nettoyer_html($value3); //accentuation $value3=html_entity_decode($value3); // Recherche et affichage des occurences do { $occu = stristr($value3,$motclef); if ($occu!="") { if ($key2!=$dejavu) echo '<p><br/>Mot clef trouv&eacute; dans la page : <a href="/?'.$key2.'">'.$key2.'</a><br/></p>'; $dejavu=$key2; $nboccu++; //Affichage d'un extrait de $value3 echo '<p>'.$nboccu.' - "...<em>'.substr($occu,0,200).'</em>..."<br/></p>'; //pour recherche d'une autre occurence dans le même contenu $value3=substr($occu,100); } } while($occu!=""); $dejavu=""; $nboccu=0; } elseif ($key1 == "module" && is_array($value3)) { foreach ($value3 as $key4 => $value4) { if ($key4=="content" && is_string($value4) ) { $nboccu=0; // le contenu à explorer est dans $value4, le nom du module/page est $key2/$key3 //Nettoyage de $value4 : on enlève tout ce qui est inclus entre < et > $value4=nettoyer_html($value4); //accentuation $value4=html_entity_decode($value4); // Recherche et affichage des occurences do { $occu = stristr($value4,$motclef); if ($occu!="") { if ($key3!=$dejavu) echo '<p><br/>Mot clef trouv&eacute; dans la page : <a href="/?'.$key2.'/'.$key3.'">'.$key2.'/'.$key3.'</a><br/></p>'; $dejavu=$key3; $nboccu++; echo '<p>'.$nboccu.' - "...<em>'.substr($occu,0,200).'</em>..."<br/></p>'; } //pour recherche d'une autre occurence dans le même contenu $value4=substr($occu,100); } while($occu!=""); $dejavu=""; $nboccu=0; } } } } } } } } } else echo '<p><br/>Trop court ! minimum 3 caract&egrave;res</p>'; echo '<br/><br/><br/>'; ?> </body></html>  

      recherche.php
×
×
  • Créer...