logo site
SpipFactory.fr
Slogan du site

C’est une plateforme d’hébergement autogéré en association de loi 1901. Propulsée par la mutualisation de Spip, sous habillage Escal

logo article ou rubrique
HELP mon site est cassé ....

Les choses à faire avant de poser une question

Attention pour votre problème,

donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.

Problème d’affichage Espace public

- Opération a faire dans l’ordre et controler l’affichage de votre site entre chaque.

1° Vider votre cache

    • https:// URL_SITE /ecrire/ ?exec=admin_vider

2° Débrancher votre répertoire "squelettes" afin de confirmer que le bug, ne viens pas d’une de vos personnalisation.

    • en renommant le répertoire /squelettes en /squelettes_old

Le problème persiste ?
==> Alors oui vous pouvez demander de l’aide.

Le problème a disparu ?
==> Alors une de vos personnalisations a créé le défaut, chercher dans votre répertoire /squelettes le fichier fautif.

- Comment faire ?

  • En renommant répertoire par répertoire pour trouver celui dans lequel se trouve le groupe de fichier incriminé,
  • puis renommer fichier par fichier pour trouver le fautif.

Bien entendu entre chaque manipulation, le cache aura été vidé, et les répertoires ou fichier redisposés avec leur bon nom.

3°Désactiver tous les plugins afin de vous assurer que le bug ne viens pas d’un plugin X.

Problème d’affichage Espace privé

  • si affichage d’erreur dans la partie privé
    • https:// URL_SITE /ecrire/ ?exec=base_repair

ci dessous les hébergés spipfactory.fr ne sont pas concerné

  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL

Merci d’avance pour les contributeurs qui vous aident !

Par ailleurs, n’oubliez pas que les contributeurs sont des humains.

Pour allez plus loin ...

SPIP propose nativement quelques fonctionnalités pour venir en aide au webmestre lors de la phase de débuggage (ou débogage) des squelettes.

Ces fonctions d’information sont accessibles en passant des variables spécifiques dans l’url de la page appelée.

var_mode=calcul et var_mode=recalcul

L’appel de « var_mode=calcul » régénère le code html (lance l’exécution du code déjà compilé) et rafraîchit le cache (crée les fichiers html qui n’auront plus qu’à être lus lors des prochains appels de la page).

L’appel de « var_mode=recalcul » régénère le code php (effectue une nouvelle compilation du squelette), puis régénère le code html (lance l’exécution du code qui vient d’être compilé) enfin rafraîchit le cache (crée les fichiers html qui n’auront plus qu’à être lus lors des prochains appels de la page).
le recalcul de la page régénère aussi les CSS et scripts JavaScript compressés.
le recalcul ne s’applique pas aux images (vignettes, images-typo, ...)

  • Premier clic appelant « var_mode=calcul »
  • un second clic appelant « var_mode=recalcul ».


Attention :

On pourrait être tenté d’utiliser &var_mode=recalcul dans des liens de ses squelettes (pour forcer la mise à jour de CSS ou JavaScript par exemple). C’est une très mauvaise pratique qu’il faut éviter car elle est consommatrice de ressources du serveur (re-compilation du squelette).

Les var

var_mode=inclure

L’appel de « var_mode=inclure » affiche le nom et le chemin de chaque noisette (« inclure » ou « modèle ») qui compose la page.

Ceci permet de vérifier que les « inclure », réellement appelés par le squelette de la page, sont bien ceux que l’on y a spécifiés.

var_profile=1

L’appel de « var_profile=1 » affiche le détail des requêtes SQL et les temps de calcul de chacune. Les requêtes sont classées de la plus gourmande en temps d’exécution à la plus rapide.

Cette fonction est particulièrement utile pour comprendre ce qui peut rendre une page excessivement lente à s’afficher.
Elle permet de visualiser les requêtes SQL générées par chaque boucle du squelette (y compris les squelettes inclus) ainsi que les requêtes hors boucle (notées « Hors Compilation ») générées par SPIP.


Attention :
Penser à calculer la page (&var_profile=1 & var_mode=calcul) pour éviter que ce ne soit le cache qui soit lu, faussant ainsi le résultat affiché.)

var_mode=preview

L’appel de « var_mode=preview » depuis l’espace privé permet de visualiser dans l’espace public un article de statut « proposé à la publication » sans avoir besoin de le publier.

var_mode=urls

L’appel de « var_mode=urls » force la mise à jour de toutes les URLs de la page.

var_mode=debug

L’appel de « var_mode=debug » détaille la génération d’une page (boucles spip - requêtes SQL - code php - statistiques des requêtes SQL).

Les Logs

_LOG_FILELINE

Très utile en période de debugage, la constante _LOG_FILELINE permet d’ajouter dans les logs le nom du fichier, le numéro de la ligne et le nom de la fonction d’où le log est généré.

Il est possible de déclarer cette constante dans votre fichier config/mes_options.php (voir l’article qui lui est consacré) :
// pour debugage précis
define(’_LOG_FILELINE’, true) ;

Un fichier de log est limité à 100 kilo octets par défaut. Au delà de cette taille, le fichier courant est renommé avec l’extension .log.1 et un nouveau fichier est créé.

l’éventuel .log.1 existant est renommé en .log.2 avant l’opération ci-dessus.

De même,

l’éventuel .log.2 existant est renommé en .log.3 avant l’opération ci-dessus.

Enfin,

l’éventuel .log.3 existant est supprimé avant l’opération ci-dessus.

Tout d’abord sachez qu’il existe les logs du serveur et les logs de SPIP
prenons comme exemple le serveur où est hébergé la plate-forme de SpipFactory.

Interpréter les logs

  • Côté Serveur : /home/www/spipfactory/log/
    • access-spipfactory.log
      • logs d’accés Apache
    • error-spipfactory.log
      • log d’erreur Apache
    • php-error.log
      • logs d’erreur PHP
    • php-fpm-slowlog-site.log
      • logs des processus php/fpm
  • Côté SPIP
    • /home/www/spipfactory/public_html/tmp/
      • spip.log
    • /home/www/spipfactory/public_html/tmp/log/
      • mysql.log
      • mysqlmysql.log
      • spip.log
  • Côté SPIP mutualisation : /home/www/spipfactory/public_html/sites/spipfactory.com/tmp/log/
    • maj.log
    • spip.log
    • spip_error.log
    • sqlite.log

Les commandes pour lire les logs en console

  • sudo tail -78 Nom_du_fichier.log (n’affichera que les 78 dernières lignes du fichier)
  • sudo head -128 nom du fichier ( affichera les 128 premières lignes du fichier)
  • cat nom du fichier lira tout le fichier
  • cat | more (lira page par page (appuyer sur la touche space pour faire défiler)
  • fgrep 500 access-xxx.log | grep -v 200 (je ne sais pas à quoi ça sert !)

Ça correspond à quoi ça ?

  • (pid xxxxx)
    numéro de processus sur le serveur. 1 Pid = 1 hit sur le serveur. Si le pid change, c’est que c’est un autre hit (qui peut être un hit ajax du même utilisateur ou un hit d’un autre utilisateur).
  • Pub = public : un log qui se fait en affichant l’espace public
  • Pri = privé : pareil dans le privé

Le reste INFO, ERREUR, WARNING est le degré de log, tel que défini là :

// on peut définir _LOG_FILTRE_GRAVITE dans mes_options.php

Les logs et le fichier mes_options.php

Le fichier de configuration ecrire/inc_version.php définit la taille maximale des fichiers de log. Lorsqu’un fichier dépasse la taille souhaitée, il est copié sous un autre nom, par exemple prive_spip.log.n (n s’incrémentant). Ce nombre de fichiers copiés est aussi réglable. Il est aussi possible de désactiver les logs en mettant une de ces valeurs à zéro dans mes_options.php.

$GLOBALS[’nombre_de_logs’] = 4 ; // 4 fichiers au plus
$GLOBALS[’taille_des_logs’] = 100 ; // de 100ko au plus

Une constante _MAX_LOG (valant 100 par défaut) indique le nombre d’entrées que chaque appel d’une page peut écrire. Ainsi, après 100 appels de spip_log() par un même script, la fonction ne « log » plus.

et puis

_LOG_FILTRE_GRAVITE

Cette constante définit le niveau maximal de gravité des informations à enregistrer dans les fichiers de log de SPIP.

Par défaut seuls les logs d’erreur sont enregistrés pour réduire la verbosité. Lors de la phase de développement il peut être nécessaire d’ajouter dans votre fichier config/mes_options.php

// définir le niveau maximum de verbosité des logs
define(’_LOG_FILTRE_GRAVITE’, 8) ;

L’écriture historique spip_log(’message’), sans précision du niveau reste supportée mais dépréciée.

Le niveau par défaut est dans ce cas de 5.

Les différentes valeurs de cette constante sont (du moins verbeux au plus verbeux) :

  • 0 (_LOG_HS)
  • 1 (_LOG_ALERTE_ROUGE)
  • 2 (_LOG_CRITIQUE)
  • 3 (_LOG_ERREUR)
  • 4 (_LOG_AVERTISSEMENT)
  • 5 (_LOG_INFO_IMPORTANTE)
  • 6 (_LOG_INFO)
  • 7 (_LOG_DEBUG)

Obtenir encore plus d’informations pour le debugage

- En ajoutant dans config/mes_options.php :

Désactiver le cache de SPIP

<?php
define('_NO_CACHE', 1);
?>

ou en cliquant sur le bouton nativement présent depuis SPIP 3 : "Désactiver temporairement le cache"

Activer les rapports d’erreurs PHP

<?php
error_reporting(E_ALL^E_NOTICE);
ini_set ("display_errors", "On");
?>

Afficher toutes les erreurs dans SPIP

<?php
define('SPIP_ERREUR_REPORT',E_ALL);
?>

Augmenter la taille des logs

<?php
$GLOBALS['taille_des_logs'] = 5000;
?>

Avoir tous les logs (SPIP3)

<?php
define('_LOG_FILTRE_GRAVITE',8);
?>

Soutenir par un don