Aller au contenu
Support de Zwii
  • 0
augras

[RESOLU]crash du site zwii 10.3.05

Question

Bonsoir,

Ce qui se passe ressemble beaucoup à ce que j'ai lu dans ce fil :

 

Je viens de constater que l'un de mes sites ne fonctionnait plus : erreur 404 sur la page d'accueil.

Impossible de me connecter : j'ai un message m'indiquant que le nombre de tentative de connexion infructueuse est dépassé et que mon compte est bloqué... hier tout allait bien et je ne crois même pas avoir essayé de me connecter.

Je ne sais pas si ça a un lien : maj automatique de la version 10.3.2 vers la 10.3.5 mercredi et tout c'était bien passé, comme sur les autres sites.

Le fichier user.json est vide

{
    "user": null
}

page.json aussi et module.json ne contient que ça :

{
    "module": {
        "search": {
            "previewLength": 100,
            "resultHideContent": false,
            "placeHolder": "Un ou plusieurs mots-clés séparés par un espace ou par +",
            "submitText": "Rechercher"
        }
    }
}

Bref, on dirait bien que c'est effectivement la même chose.

 

J'ai restauré le dossier site/data depuis la dernière sauvegarde comme indiqué dans la solution dans le post ci-dessus et tout fonctionne (j'ai conservé le dossier data buggé). Remettre simplement le fichier user.json ne m'a pas permis de me connecter : utilisateur inconnu.

 

Philippe

Modifié par augras

Partager ce message


Lien à poster
Partager sur d’autres sites

12 réponses à cette question

Messages recommandés

  • 0

Je viens de regarder la dernière sauvegarde réalisée la nuit passée à minuit 15 et les fichiers sont bons : je n'ai pas tenté d'accéder au site entre minuit 15 et toute à l'heure.

Par contre je remarque que la dernière modification sur user.json et page.json correspond exactement à l'heure du backup ! Dernière modification 1 s après l'heure de la sauvegarde.

Mais pour module.json la dernière modification date de ce matin à 9h03 : aucun rapport et je en vois pas comment c'est possible puique je n'était même pas encore levé.

Modifié par augras

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir

Les backups et autres opérations s’effectuent lorsque le site est visité pas forcément quand tu es connecté. 
Tu devrais vérifier si le fichier de la classe jsondb ont été mis à jour, cela pourrait ne pas être le cas si les droits ne sont pas corrects. 
La copie d’écran du fil que tu cites devrait te donner des indications. 
Le bug que tu relates est déclenché au niveau des entrées sorties du serveur en cas d’impossibilité d’accéder au fichier de données la classe essayait de restaurer un fichier modèle  sauf que ce n’était pas possible. 
Cette partie du code a été corrigée à coup sûr, en dehors d’un problème de mise à jour je ne vois pas. 
 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir @Fred

Il y a 23 heures, Fred a dit :

Les backups et autres opérations s’effectuent lorsque le site est visité pas forcément quand tu es connecté. 

J'ai bien compris : ce que je voulais dire c'est que les fichiers de la dernière sauvegarde sont bons et que ceux altérés n'ont pas pu l'être par une tentative de connexion.

Je vais regarder le fichier de la classe jsondb mais pour moi il n'y a pas de problème de droits et il doit avoir été mis à jour.

La sauvegarde, je ne vois pas par quel mystère mais on ne sait jamais, ne peut pas avoir de rapport ? Elle se termine et une seconde après les fichiers sont modifiés et altérés : curieux concours de circonstance.

Philippe

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Tu avais déjà eu des pbs de de droits il me semble, je ne vois que ça, depuis la publication du correctif 10.3, il n’y a plus aucun cas.  

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

Je me souviens de cette question et j'avais indiqué que les droits des fichiers étaient en 644 et les dossiers en 755 : personne n'a jamais indiqué si ces droits étaient les bons et sinon lesquels mettre.

De toute évidence il y a bien un problème car le fichier JsonDb.class.php pourtant mis à jour en date du 09/11, n'a pas les lignes commentées ni celles ajoutées pour corriger le problème.

Et je viens de vérifier sur la version de @sylvainlelievre intégrant son plugin snipcart basé sur la dernière 10.3.05 et c'est le même fichier.

Philippe

Modifié par augras

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Le fichier est différent de celui dans le fil en lien au début et je ne m'y retrouve pas. Voilà la fin du fichier :

  /**
     * Local database upload
     * @param bool $reload Reboot data?
     * @return array|mixed|null
     */
    protected function loadData($reload = false) {
        if ($this->data === null || $reload) {
            // $this->db = $this->config['dir'] . DIRECTORY_SEPARATOR . $this->config['name'];
            $this->db = $this->config['dir'] . $this->config['name'];

            if (!file_exists($this->db)) {
                return null;
            } else {
                $this->data = json_decode(file_get_contents($this->db), true);
                if (!$this->data === null) {
                    throw new \InvalidArgumentException('Database file ' . $this->db
                        . ' contains invalid json object. Please validate or remove file');
                }
            }
        }
        return $this->data;
    }

    /**
     * Saving to local database
     */
    public function save() {
        file_put_contents($this->db, json_encode($this->data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT));
    }
}

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Il m'a l'air correct...

 

Quelque part dans le code il se passe une situation ou une donnée NULL est écrite. Il n'y a que dans la procédure de login où c'est possible que ça foire, le second argument du setDat est une variable lu dans le formulaire de login. Je pense à une tentative de piratage de ton site avec une attaque bruteforce, ou un truc dans le genre.

Est-ce que tu as le fichier error.log de ce serveur et la journalisation de cet horaire ?

 

En attendant je vais ajouter un test dans le setData pour éviter que cette situation aboutisse à une écriture de données nulles. Ce sera dans 10.3.06.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

J'ai le fichier de journalisation que génère zwii.

Par contre il n'y a pas eu de error.log de généré, mais tu fais peut-être référence à un fichier de l'hébergeur ?

Je regarde chez l'hébergeur ce que je trouve et te passe le tout par mp.

 

Philippe

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Il y a 7 heures, augras a dit :

Bonjour,

Je me souviens de cette question et j'avais indiqué que les droits des fichiers étaient en 644 et les dossiers en 755 : personne n'a jamais indiqué si ces droits étaient les bons et sinon lesquels mettre.

De toute évidence il y a bien un problème car le fichier JsonDb.class.php pourtant mis à jour en date du 09/11, n'a pas les lignes commentées ni celles ajoutées pour corriger le problème.

Et je viens de vérifier sur la version de @sylvainlelievre

 

intégrant son plugin snipcart basé sur la dernière 10.3.05 et c'est le même fichier.

 

Philippe

Suite du MP,

J'ai du mal à te suivre, donc ton fichier de classe jsondb n'était pas à jour ?

Sylvain le même fichier que le tien dans 10.3.05 ?

En PJ tu trouveras celui de la master qui a été modifié avec la 10.3.04

La partie qui a été modifiée est la fonction loadData() c'est là que le script initial déconnait.

 

Malgré tout, j'ai modifié un test dans la fonction setData, test qui de plus était bugué :

		// Pas d'enregistrement lorsqu'une notice est présente ou tableau transmis vide
		if (!empty(self::$inputNotices
			OR empty($keys))) {
			return false;
		}

On voit bien qu'une parenthèse est mal placée.

 

La correction que j'ai faite suite à ton message :

		// Pas d'enregistrement lorsqu'une notice est présente ou tableau transmis vide
		if (!empty(self::$inputNotices)
			OR empty($keys)
			OR in_array(NULL, $keys) ) {
			return false;
		}

La parenthèse a retrouvé sa place, et on teste la présence d'une valeur NULL dans le tableau contenant les données à sauvegarder ou que le tableau est vide.

 

En effet si on effectue =

$userId = quelques chose qui renvoit NULL
$this->setData(['user',$userId]);

On plante le fichier de données.

Évidemment ce n'est pas une action volontaire qui provoquerait ça.

 

Si on regarde le code de user.php on a par exemple pour le mot de passe oublié :

$userId = $this->getInput('userForgotId', helper::FILTER_ID, true);

On comprend tout de suite que si getInput ne fonctionne pas, il renverra NULL et donc les données sont écrasées.

 

Voilà tout,

 

Je sortirai 10.3.06 dès que possible, demain peut-être.

 

 

 

JsonDb.class.php

  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir,

Désolé pour ma réponse tardive mais grosse journée ! Encore une !

Pour moi il a bien été mis à jour puisque le même que sur la version snipcart de @sylvainlelievre : c'est bien ce qui est problématique puisque malgré la maj il y a tout de même problème.

Du coup je ne fais rien du fichier que tu as joint puisque la 10.3.06 est sortie ?

Merci,

Philippe

  • J'aime 1

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
il y a 35 minutes, augras a dit :

Bonsoir,

Désolé pour ma réponse tardive mais grosse journée ! Encore une !

Pour moi il a bien été mis à jour puisque le même que sur la version snipcart de @sylvainlelievre

 

 : c'est bien ce qui est problématique puisque malgré la maj il y a tout de même problème.

 

Du coup je ne fais rien du fichier que tu as joint puisque la 10.3.06 est sortie ?

Merci,

Philippe

Tu peux installer les updates d'aujourd'hui 🙂

 

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...