FAQs et autres Aides au dépannage

Ci-dessous quelques questions fréquemment posées à propos de Elgg.

Contenu

Généralités

Voir aussi

Trouver de l’aide

« Le plugin ne peut pas démarrer et a été désactivé » - « Plugin cannot start and has been deactivated » ou « Ce plugin est invalide » - « This plugin is invalid »

Cette erreur est habituellement accompagnée par plus de détails qui expliquent pourquoi le plugin est invalide. Elle est généralement causée par un plugin mal installé.

Si vous installez un plugin appelé « test », il y aura un répertoire test dans le dossier mod. Dans ce dossier test il doit y avoir un fichier composer.json : /mod/test/manifest.xml.

Si ce fichier n’existe pas, cela peut être causé par :
  • l’installation d’un plugin dans le mauvais répertoire

  • la création d’un répertoire dans /mod qui ne contient pas un plugin

  • un mauvais transfert FTP

  • l’extraction d’un plugin dans un niveau de répertoire supplémentaire (myplugin.zip est extrait dans myplugin/myplugin)

  • plugin incompatible

Si vous utilisez un hôte de type Unix et que les fichiers existent dans le bon répertoire, vérifiez les permissions. Elgg doit avoir accès en lecture + exécution sur les répertoires.

Page Blanche (WSOD)

Une page vide, blanche (souvent appelé « écran blanc de la mort » - « white screen of death » ou WSOD) signifie qu’il y a une erreur de syntaxe PHP. Il existe un certain nombre de causes possibles à cela :
  • fichier corrompu - essayez de transférer à nouveau le code vers votre serveur

  • un appel à un module php qui n’a pas été chargé - ceci peut se produire après que vous ayez installé un plugin qui requiert un module spécifique.

  • mauvais plugin - tous les plugins n’ont pas été écrits avec le même niveau de qualité aussi vous devriez faire attention à ceux que vous installez.

Pour trouver l’origine de l’erreur, modifiez le fichier .htaccess pour afficher les erreurs dans le navigateur. Définissez display_errors à 1 et chargez la même page à nouveau. Vous devriez voir les erreurs PHP dans votre navigateur. Modifiez à nouveau ce paramètre une fois que vous avez résolu le problème.

Note

Si vous utilisez le plugin Developer’s Tools, allez dans sa page de configuration et assurez-vous que l’option « Afficher les erreurs PHP fatales » - « Display fatal PHP errors » - est bien activée.

Si l’écran blanc est dû à un mauvais plugin, retirez les derniers plugins que vous avez installé en supprimant leurs répertoires puis rechargez la page.

Note

Vous pouvez désactiver temporairement tous les plugins en créant un fichier vide dans mod/disabled. Vous pouvez ensuite désactiver le plugin responsable via les outils du panneau d’administration.

Si vous avez un WSOD quand vous effectuez une action, comme vous identifier ou publier un article de blog, mais qu’il n’y a pas de message d’erreur, le plus probable est que ce soit causé par des caractères non-imprimables dans le code du plugin. Vérifiez le plugin et supprimez les espaces vides et les nouvelles lignes situés après le tag de fin php (?>).

Page non trouvée

Si vous avez récemment installé votre site Elgg, la cause la plus probable d’une erreur de page non trouvée est que mod_rewrite n’est pas configuré correctement sur votre serveur. Il y a des informations dans la page Installation - Dépannage sur la manière de résoudre cela. La deuxième cause la plus probable est que l’URL de votre site dans votre base de données est incorrecte.

Si vous exécutez votre site depuis un certain temps et commencez soudainement à obtenir des erreurs de page non trouvées, vous devez vous demander ce qui a changé. Avez-vous ajouté des plugins ? Avez-vous modifié la configuration de votre serveur ?

Pour déboguer une erreur de page non trouvée « page not found » :

  • Confirmez que le lien qui a mené à la page manquante est correct. S’il ne l’est pas, comment ce lien a-t-il été généré ?

  • Confirmez que les règles de réécriture du .htaccess sont bien prises en compte.

Erreur de correspondance des jetons de connexion

Si vous devez vous connecter deux fois à votre site et que le message d’erreur après la première tentative indique qu’il y a eu une erreur de décalage de jeton, l’URL dans les paramètres de Elgg ne correspond pas à l’URL utilisée pour y accéder. La cause la plus fréquente est d’ajouter ou de supprimer le « www » lors de l’accès au site. Par exemple, www.elgg.org vs elgg.org. Cela pose un problème avec la gestion des sessions en raison de la façon dont les navigateurs Web enregistrent les cookies.

Pour résoudre ce problème, vous pouvez ajouter des règles de réécriture. Pour rediriger de www.elgg.org vers elgg.org dans Apache, les règles peuvent ressembler à :

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^elgg\.org
RewriteRule (.*) http://elgg.org/$1 [R=301,L]

La redirection de non-www vers www pourrait ressembler à ceci :

RewriteCond %{HTTP_HOST} ^elgg\.org
RewriteRule ^(.*)$ http://www.elgg.org/$1 [R=301,L]

Si vous ne savez pas comment configurer les règles de réécriture, demandez à votre hébergeur pour plus d’informations.

Il manque les champs __token ou __ts dans le formulaire. Veuillez recharger la page pour continuer

Toutes les actions Elgg requièrent un jeton de sécurité, et cette erreur se produit quand ce jeton est manquant. C’est un problème soit avec la configuration de votre serveur, soit avec un plugin tierce-partie.

Si vous rencontrez ce cas lors d’une nouvelle installation, assurez-vous que votre serveur est correctement configuré et que vos règles de réécriture sont correctes. Si vous en faites l’expérience sur une mise à niveau, assurez-vous d’avoir mis à jour vos règles de réécriture dans .htaccess (Apache) ou dans la configuration du serveur.

Si vous rencontrez ce cas, désactivez tous les plugins tiers et réessayez. Les très vieux plugins pour Elgg n’utilisent pas de jeton de sécurité. Si le problème disparaît lorsque les plugins sont désactivés, c’est dû à un plugin qui devrait être mis à jour par son auteur.

Mode de maintenance

Pour mettre temporairement votre site hors-ligne, allez dans Administration -> Utilitaires -> Mode de Maintenance. Complétez le formulaire et cliquez sur Enregistrer pour désactiver votre site pour tout le monde à l’exception des administrateurs.

E-mail manquant

Si vos utilisateurs signalent que les e-mails de validation ne s’affichent pas, demandez-leur de vérifier leur dossier de spam. Il est possible que les e-mails provenant de votre serveur sont marqués comme spam. Cela dépend de nombreux facteurs : si votre fournisseur d’hébergement a un problème avec les spammeurs, la manière dont est faite votre configuration e-mail de PHP, quel agent de transport de messagerie votre serveur utilise, ou encore si votre hébergement limite le nombre d’e-mails que vous pouvez envoyer en une heure.

Si personne ne reçoit d’e-mail du tout, il est très probable que votre serveur n’est pas configuré correctement pour le courrier électronique. Votre serveur a besoin d’un programme pour envoyer un e-mail (appelé agent de transfert de messagerie - MTA) et PHP doit être configuré pour utiliser le MTA.

Pour vérifier rapidement si PHP et un agent de transfert de mail - MTA « Mail Transfer Agent » - sont correctement configurés, créez un fichier sur votre serveur avec le contenu suivant :

<?php
$address = "your_email@your_host.com";

$subject = 'Test email.';

$body = 'If you can read this, your email is working.';

echo "Attempting to email $address...<br />";

if (mail($address, $subject, $body)) {
        echo 'SUCCESS!  PHP successfully delivered email to your MTA.  If you don\'t see the email in your inbox in a few minutes, there is a problem with your MTA.';
} else {
        echo 'ERROR!  PHP could not deliver email to your MTA.  Check that your PHP settings are correct for your MTA and your MTA will deliver email.';
}

Assurez-vous de remplacer « your_email@your_host.com » par votre adresse e-mail réelle. Prenez soin de garder des guillemets autour d’elle ! Lorsque vous accédez à cette page via votre navigateur Web, cela va tenter d’envoyer un e-mail de test. Ce test vous permettra de savoir si PHP et votre MTA sont correctement configurés. Si le test échoue - soit vous obtenez une erreur, soit vous ne recevez jamais l’e-mail - vous aurez besoin de faire plus de recherches et éventuellement de contacter votre fournisseur de services.

La configuration complète des fonctionnalités de messagerie d’un MTA et de PHP dépasse le cadre de cette FAQ, et vous devez rechercher plus de ressources sur Internet à ce sujet. Quelques informations de base sur les paramètres php peuvent être trouvées sur le site de PHP

Journaux du serveur

Il est probable que vous utilisiez Apache comme serveur Web. Les avertissements et les erreurs sont écrits dans un journal par le serveur Web et peuvent être utiles pour les problèmes de débogage. Vous verrez généralement deux types de fichiers journaux : les journaux d’accès et les journaux d’erreurs. Les informations de PHP et de Elgg sont inscrites dans le journal des erreurs du serveur.

  • Linux – Le journal d’erreur est probablement dans /var/log/httpd ou /var/log/apache2.

  • Windows - Il est probablement dans votre répertoire Apache.

  • Mac OS - Le journal d’erreur est probablement dans /var/log/apache2/error_log

Si vous utilisez un hébergement partagé sans accès ssh, votre fournisseur d’hébergement peut fournir un mécanisme pour obtenir l’accès à vos journaux de serveur. Vous devrez leur poser vos questions à ce sujet.

Comment fonctionne l’inscription ?

Avec une installation par défaut, voici comment fonctionne l’inscription :

  1. L’utilisateur renseigne le formulaire d’inscription et l’envoie

  2. Le compte utilisateur est créé et désactivé jusqu’à sa validation

  3. Un e-mail est envoyé à l’utilisateur afin de valider son compte

  4. Quand l’utilisateur clique sur le lien, le compte est validé

  5. L’utilisateur peut maintenant s’identifier

Les échecs durant ce processus comprennent l’utilisateur qui entre une adresse e-mail incorrecte, l’e-mail de validation marqué comme spam, ou un utilisateur qui ne prend jamais la peine de valider le compte.

Validation de l’utilisateur

Par défaut, tous les utilisateurs qui s’inscrivent doivent valider leur compte par e-mail. Si un utilisateur a des difficultés pour valider son compte, vous pouvez valider manuellement les utilisateurs en allant dans Administration -> Utilisateurs -> Non validés.

Vous pouvez supprimer cette exigence en désactivant le plugin User Validation by Email.

Note

La suppression de la validation a certaines conséquences : il n’y a aucun moyen de savoir si un utilisateur inscrit dispose d’une adresse e-mail fonctionnelle, et cela peut laisser votre système ouvert aux spammeurs.

Ajouter manuellement un utilisateur

Pour ajouter manuellement un utilisateur, dans la partie Administrer, accédez aux Utilisateurs. Là, vous verrez un lien « Ajouter un nouvel utilisateur ». Après avoir rempli les informations et soumis le formulaire, le nouvel utilisateur recevra un e-mail avec son nom d’utilisateur et son mot de passe, et un rappel pour changer le mot de passe.

Note

Elgg ne force pas l’utilisateur à changer le mot de passe.

Je suis en train de créer ou viens d’installer un nouveau thème, mais les images ou d’autres éléments ne fonctionnent pas

Assurez-vous que le thème est placé tout en bas de la liste des plugins.

Effacez le cache de votre navigateur et rechargez la page. Pour alléger la charge sur le serveur, Elgg demande rarement au navigateur de charger le fichier CSS. Un nouveau thème modifiera complètement le fichier CSS et un rafraîchissement devrait inciter le navigateur à demander à nouveau le fichier CSS.

Si vous créez ou modifiez un thème, assurez-vous d’avoir désactivé les caches simples et système. Cela peut être fait en activant le plugin Developer Tools, puis en naviguant vers Administration -> Outils de développement -> Paramètres. Une fois que les modifications vous conviennent, réactivez les caches ou les performances en souffriront.

Modification des champs du profil

Dans les paramètres d’administration de Elgg se trouve une page pour remplacer les champs de profil par défaut. Par défaut, Elgg propose deux choix à l’administrateur :

  • Utilisez les champs de profil par défaut

  • Remplacez les champs par défaut par un jeu de champs de profil personnalisés

Vous ne pouvez pas ajouter de nouveaux champs de profil aux champs par défaut. L’ajout d’un nouveau champ de profil via l’option de remplacement des champs de profil efface ceux par défaut. Avant de laisser les utilisateurs s’inscrire, il est préférable de déterminer quels champs de profil vous voulez, quels types de champ ils devraient être, et l’ordre dans lequel ils devraient apparaître. Vous ne pouvez pas modifier le type de champ ou réordonner ou supprimer les champs après leur création sans effacer l’intégralité du profil.

Plus de flexibilité peut être obtenue grâce à des plugins. Il y a au moins deux plugins sur le site communautaire qui vous permettent d’avoir plus de contrôle sur les champs de profil. Le plugin Profile Manager est devenu très populaire dans la communauté Elgg. Il vous permet d’ajouter de nouveaux champs de profil quand vous le souhaitez, de modifier leur ordre, de regrouper les champs de profil et de les ajouter au formulaire d’inscription.

Modification de l’inscription

Le processus d’inscription peut être modifié par un plugin. Tout ce qui concerne l’inscription peut être modifié : l’apparence du formulaire, des champs d’inscription différents, des validations additionnelles des champs, des étapes additionnelles, et ainsi de suite. Ces types de changements demandent quelques connaissances de base en HTML, CSS, PHP.

Une autre option est d’utiliser le plugin Profile Manager qui vous permet d’ajouter des champs à la fois aux profils des utilisateurs et au formulaire d’inscription.

Créez le squelette du plugin

Squelette du plugin

Modification de l’apparence de l’inscription

Surchargez la vue account/forms/register

Modification du gestionnaire de l’action d’inscription

Vous pouvez écrire votre propre action pour créer le compte utilisateur

Comment puis-je modifier les paramètres PHP en utilisant .htaccess ?

Vous pouvez modifier les paramètres php dans votre fichier .htaccess. Cela est particulièrement vrai si votre fournisseur d’hébergement ne vous donne pas accès au fichier php.ini du serveur. Les variables peuvent être associées aux limites de téléchargement de fichiers, à la sécurité, à la longueur de la session, ou à n’importe quel nombre d’autres attributs php. Pour des exemples sur comment faire cela, voyez la documentation PHP à ce sujet.

Connexion via HTTPS activée par erreur

Si vous avez activé la connexion HTTPS mais que vous n’avez pas configuré SSL, vous êtes maintenant bloqué hors de votre installation Elgg. Pour désactiver ce paramètre de configuration, vous devrez modifier votre base de données. Utilisez un outil comme phpMyAdmin pour afficher votre base de données. Sélectionnez la table config et supprimez la ligne qui a le nom https_login.

Utiliser un site de test

Il est recommandé de toujours tester les nouvelles versions ou les nouveaux plugins sur un site de test avant de les exécuter sur un site de production (un site avec des utilisateurs réels). La façon la plus simple de le faire est de maintenir une installation séparée de Elgg avec des comptes factices. Lors des tests, il est important d’utiliser des comptes factices qui ne sont pas des administrateurs pour tester ce que vos utilisateurs verront.

Un test plus réaliste consiste à refléter le contenu de votre site de production sur votre site de test. Suivez les instructions pour dupliquer un site. Assurez-vous ensuite d’empêcher l’envoi d’e-mails à vos utilisateurs. Vous pouvez écrire un petit plugin qui redirige tous les e-mails vers votre propre compte (soyez conscient des plugins qui comprennent leur propre code d’envoi d’e-mail personnalisé, car vous devrez modifier ces plugins). Une fois cela fait, vous pouvez afficher tout le contenu pour s’assurer que la mise à niveau ou le nouveau plugin fonctionne comme vous le souhaitez et ne casse rien. Si ce processus vous semble trop lourd, veuillez vous en tenir à l’exécution d’un site de test simple.

500 - Internal Server Error

Qu’est-ce que c’est ?

Une erreur interne du serveur 500 - Internal Server Error signifie que le serveur web a rencontré un problème en servant une requête.

Causes possibles

Configuration du serveur web

La cause la plus fréquente pour cela est un serveur mal configuré. Si vous avez modifié le fichier .htaccess et ajouté quelque chose d’incorrect, Apache renverra une erreur 500.

Permissions sur les fichiers

Il peut également s’agir d’un problème de permissions sur un fichier. Apache doit pouvoir lire les fichiers de Elgg. L’utilisation des autorisations 755 sur les répertoires et 644 sur les fichiers permettra à Apache de lire les fichiers.

Lorsque je télécharge une photo ou que je modifie ma photo de profil, j’obtiens un écran blanc

Il est fort probable que la bibliothèque PHP GD n’est pas installée ou configurée correctement. Vous pourriez avoir besoin de l’aide de l’administrateur de votre serveur.

CSS manquant

Mauvaise URL

Parfois, les gens installent Elgg de sorte que l’URL de base est localhost et essaient ensuite d’afficher le site à l’aide d’un nom d’hôte. Dans ce cas, le navigateur ne pourra pas charger le fichier CSS. Essayez d’afficher la source de la page Web et de copier le lien du fichier CSS. Collez-le dans votre navigateur. Si vous obtenez une erreur 404, il est probable que c’est votre problème. Vous devrez modifier l’URL de base de votre site.

Erreur de syntaxe

Elgg stocke ses CSS sous forme de code PHP pour fournir flexibilité et puissance. S’il y a une erreur de syntaxe, le fichier CSS servi au navigateur peut être vide. La désactivation des plugins tierce partie est la première étape recommandée.

Erreurs de règles de réécriture d’URL - Rewrite rules

Un mauvais fichier .htaccess peut également entraîner une erreur 404 lors de la requête du fichier CSS. Cela pourrait se produire lors d’une mise à niveau si vous oubliez de mettre également à niveau le fichier .htaccess.

Devrais-je modifier la base de données manuellement ?

Avertissement

Non, vous ne devriez jamais modifier manuellement la base de données !

Est-ce que modifier manuellement la base de données va casser mon site ?

Oui.

Est-ce que je peux ajouter des champs supplémentaires aux tables dans la base de données ?

(CÀD : Je ne comprends pas le modèle de données de Elgg donc je vais ajouter des colonnes. Est-ce que vous allez m’aider ?)

Non, c’est une mauvaise idée. Étudiez le modèle de données data model et vous verrez qu’à moins que ce soit une installation très spécifique et hautement personnalisée, vous pouvez faire tout ce que vous voulez avec le modèle de données actuel de Elgg.

Je veux supprimer des utilisateurs. Est-ce que je ne peux pas les supprimer directement de la table elgg_entities ?

Non, cela va corrompre votre base de données. Supprimez-les via le site.

Je veux supprimer du spam. Est-ce que je ne peux pas juste le rechercher et le supprimer dans la table elgg_entities ?

Non, cela va corrompre votre base de données. Supprimez-le via le site.

Quelqu’un sur le site communautaire m’a dit de modifier manuellement la base de données. Est-ce que je devrais le faire ?

Qui étais-ce ? Est-ce quelqu’un d’expérimenté avec Elgg, comme l’un des développeurs du noyau ou un auteur de plugins bien connu ? Est-ce qu’il ou elle vous a donné des instructions claires sur quoi modifier ? Si vous ne savez pas qui c’est, ou si vous ne comprenez pas ou n’êtes pas à l’aise avec ces instructions, ne modifiez pas la base de données manuellement.

Je connais PHP et MySQL et ai une raison légitime de modifier la base de données. Est-ce OK de modifier manuellement la base de données ?

Assurez-vous d’abord de bien comprendre le modèle de données de Elgg et le schéma. Faites un backup, modifiez avec soin, puis testez généreusement.

Problème de connexion d’Internet Explorer (IE)

URL canonique

IE n’aime pas travailler avec des sites qui utilisent à la fois http://example.org et http://www.example.org. Il stocke plusieurs cookies et cela cause des problèmes. Il est préférable d’utiliser une seule URL de base. Pour plus d’informations sur la façon de le faire, voyez l’erreur « Login token mismatch error » - erreur de correspondance des jetons de connexion.

Cadre Chrome

Utiliser le cadre Chrome au sein de IE peut rompre le processus d’authentification.

Les e-mails ne supportent pas les caractères non-latins

Pour prendre en charge les caractères non-latins, (tels que Cyrilliques ou Chinois) Elgg a besoin du support des chaînes de caractère multibyte multibyte string support soit compilé dans PHP.

Sur de nombreuses installations (par ex. Debian & Ubuntu), c’est activé par défaut. Si ce n’est pas le cas, vous devez l’activer (ou recompiler PHP pour l’inclure). Pour vérifier si votre serveur prend en charge les chaînes multioctets - multibyte -, vérifiez phpinfo.

Durée de session

La durée de la session est contrôlée par votre configuration php. Vous devrez d’abord localiser votre fichier php.ini. Dans ce fichier vous trouverez plusieurs variables de session. Une liste complète et ce qu’elles font peuvent être trouvée dans le manuel de php.

Un fichier n’a pas de propriétaire

Il y a trois causes à cette erreur. Vous pourriez avoir une entité dans votre base de données qui a un owner_guid de 0. Cela devrait être extrêmement rare et ne peut se produire que si votre base de données/serveur plante lors d’une opération d’écriture.

La deuxième cause serait une entité où le propriétaire n’existe plus. Cela peut se produire si un plugin désactivé a été impliqué dans la création de l’entité, puis que le propriétaire est supprimé, mais l’opération de suppression a échoué (parce que le plugin est désactivé). Si vous pouvez comprendre quelle entité est à l’origine de cette situation, regardez dans votre table entities et modifiez le owner_guid pour le vôtre, puis vous pouvez supprimer l’entité via Elgg.

Avertissement

Lisez la section « Devrais-je modifier la base de données manuellement ? ». Soyez très prudent lors de l’édition directe de la base de données. Cela peut briser votre site. Faites toujours une sauvegarde avant de faire cela.

Corrections

Le plugin Database Validator vérifiera votre base de données pour ces causes et vous fournira une option pour les corriger. Assurez-vous de sauvegarder la base de données avant d’essayer l’option de correction.

Pas d’image

Si des images de profil, des images de groupe ou d’autres fichiers ont cessé de fonctionner sur votre site, il est probable qu’il s’agit d’une mauvaise configuration, surtout si vous avez migré vers un nouveau serveur.

Ce sont les erreurs de configuration les plus courantes qui bloquent le fonctionnement des images et d’autres fichiers.

Mauvais chemin pour le répertoire des données

Assurez-vous que le chemin d’accès au répertoire des données est correct dans la zone d’administration du site. Il devrait avoir un slash à la fin.

Mauvaises permissions sur le répertoire des données

Vérifiez les permissions du répertoire des données. L’utilisateur du serveur web devrait pouvoir lire et écrire dans le répertoire des données.

Installation migrée avec un nouvel emplacement du répertoire des données

Si vous avez migré une installation et que vous devez modifier votre chemin d’accès au répertoire des données, assurez-vous de mettre à jour le SQL pour le répertoire de fichiers tel que documenté dans les instructions Dupliquer une installation.

Avertissements d’obsolescence

Si vous voyez de nombreux avertissements de dépréciation qui disent des choses comme

Deprecated in 1.7: extend_view() was deprecated by elgg_extend_view()!

alors vous utilisez un plugin qui a été écrit pour une ancienne version de Elgg. Cela signifie que le plugin utilise des fonctions qui vont être supprimées dans une future version de Elgg. Vous pouvez demander au développeur de plugin si le plugin sera mis à jour, ou vous pouvez mettre à jour le plugin vous-même. Si aucune de ces alternatives n’est susceptible de se produire, vous ne devriez pas utiliser ce plugin.

JavaScript ne fonctionne pas

Si le menu utilisateur qui apparaît au survol cesse de fonctionner ou si vous ne pouvez pas supprimer les messages système, cela signifie que JavaScript est cassé sur votre site. Ceci est généralement dû à un plugin ayant un mauvais code JavaScript. Vous devriez trouver le plugin à l’origine du problème et le désactiver. Vous pouvez le faire en désactivant les plugins tierce partie un par un jusqu’à ce que le problème disparaisse. Une autre approche consiste à désactiver tous les plugins tierce partie, puis à les activer un par un jusqu’à-ce que le problème se reproduise.

La plupart des navigateurs Web vous donneront un indice quant à ce qui casse le code JavaScript. Ils disposent souvent d’une console pour les erreurs JavaScript ou un mode avancé pour afficher les erreurs. Une fois que vous voyez le message d’erreur, il est plus facile de localiser le problème.

Les adresses IP dans les journaux sont incorrectes

Si votre installation Elgg est derrière un serveur proxy ou un équilibreur de charge, les adresses IP enregistrées dans les plugin des journaux système - System Log - peuvent être erronées. Elles pourraient n’indiquer que les adresses IP du serveur proxy.

Afin de résoudre ceci, vous pouvez configurer les adresses IP du serveur proxy comme adresses IP de confiance, ce qui permettra au système d’accéder aux bonnes IPs de vos utilisateurs.

Dans le fichier settings.php, vous pouvez configurer des paramètres pour $CONFIG->http_request_trusted_proxy_ips et $CONFIG->http_request_trusted_proxy_headers. Regardez dans le fichier settings.php pour plus d’information.

Sécurité

Est-ce que upgrade.php pose des soucis de sécurité ?

Upgrade.php est un fichier utilisé pour exécuter des mises à niveau du code et de la base de données. Il est placé à la racine de l’installation et il n’y a pas besoin d’un compte identifié pour y accéder. Sur un site totalement à niveau, l’exécution du fichier va seulement réinitialiser les caches et quitter, de sorte que ceci ne constitue pas un problème de sécurité.

SI cela vous préoccupe tout de même, vous pouvez supprimer, déplacer, ou modifier les permissions de ce fichier jusqu’à-ce que vous ayez besoin d’effectuer une mise à niveau.

Devrais-je supprimer install.php ?

Ce fichier est utilisé pour installer Elgg et n’a pas besoin d’être supprimé. Le fichier vérifie si Elgg est déjà installé et redirige l’utilisateur vers la première page si c’est le cas.

Filtrage

Le filtrage est utilisé dans Elgg pour rendre les attaques XSS plus difficiles. L’objectif du filtrage est de supprimer les JavaScript et autres entrées dangereuses envoyées par les utilisateurs.

Le filtrage est effectué via la fonction elgg_sanitize_input(). Cette fonction récupère une chaîne et renvoie une chaîne filtrée. Elle déclenche un event sanitize, input. Par défaut, Elgg est livré avec la bibliothèque de filtrage htmLawed sous forme de plugin. Les développeurs peuvent ajouter n’importe quel code de filtrage supplémentaire ou de remplacement via un plugin.

La fonction elgg_sanitize_input() est appelée pour chaque saisie utilisateur dès lors que la saisie est obtenue à travers un appel à get_input(). Si pour une raison quelconque un développeur souhaite ne pas appliquer le filtrage par défaut sur certaines saisies utilisateur, la fonction get_input() dispose d’un paramètre pour désactiver le filtrage.

Développement

Que devrais-je utiliser pour modifier le code php ?

Il existe deux options principales : l’éditeur de texte ou l”environnement de développement intégré (IDE).

Éditeur de texte

Si vous débutez dans le développement de logiciels ou n’avez pas beaucoup d’expérience avec les IDE, l’utilisation d’un éditeur de texte vous permettra d’être opérationnel le plus rapidement. Au minimum, vous voudrez un éditeur avec coloration syntaxique, qui rend le code plus facile à lire. Si vous pensez que vous pouvez soumettre des correctifs pour le suivi de bogues, vous voudrez vous assurer que votre éditeur de texte ne modifie pas les terminaisons de ligne. Si vous utilisez Windows, Notepad++ est un bon choix. Si vous êtes sur un Mac, TextWrangler est un choix populaire. Vous pouvez également essayer TextMate.

IDE - Environnement de Développement Intégré

Un IDE - EDI pour Environnement de Développement Intégré en français - fait exactement ce que son nom implique : il comprend un ensemble d’outils que vous utiliseriez normalement séparément. La plupart des IDE incluront le contrôle de code source qui vous permettra de valider et de mettre à jour directement votre code à partir de votre référentiel cvs. Il peut avoir un client FTP intégré pour faciliter le transfert de fichiers sur un serveur distant. Il disposera d’une vérification de syntaxe pour attraper les erreurs avant que vous essayiez d’exécuter le code sur un serveur.

Les deux IDE gratuits les plus populaires pour les développeurs PHP sont Eclipse et NetBeans. Eclipse dispose de deux plugins différents pour travailler avec le code PHP : PDT et PHPEclipse.

Je n’aime pas certaines traductions dans Elgg. Comment puis-je les changer ?

La meilleure façon de faire ceci est avec un plugin.

Créez le squelette du plugin

Squelette du plugin

Localisez la chaîne que vous voulez modifier

Toutes les chaînes qu’un utilisateur peut voir devraient être dans le répertoire /languages ou dans le répertoire des langues d’un plugin (/mod/<plugin name>/languages). Ceci est fait de sorte qu’il soit facile de changer la langue utilisée par Elgg. Pour plus d’informations à ce sujet, consultez la documentation développeur sur Internationalisation .

Pour trouver la chaîne, utilisez grep ou un éditeur de texte qui fournit la recherche dans les fichiers pour localiser la chaîne. (Un bon éditeur de texte pour Windows est Notepad++ ) Disons que nous voulons modifier la chaîne Ajouter un contact en Se faire un nouvel ami. La commande grep qui pemet de trouver cette chaîne serait grep -r "Ajouter un contact" *. Avec Notepad++ , vous utiliseriez la commande « Trouver dans les fichiers ». Vous recherchez la chaîne, définissez le filtre sur *.php, définissez le répertoire de recherche sur le répertoire racine de Elgg, et vous assurez qu’il recherche dans tous les sous-répertoires. Vous voudrez peut-être aussi définir que la recherche soit sensible à la casse.

Vous devriez placer la chaîne « Ajouter un contact » dans /languages/fr.php. Vous devriez voir quelque chose comme ceci dans le fichier :

'friend:add' => "Add friend",

Cela signifie que chaque fois que Elgg voit friend:add il le remplace par Ajouter un contact. Nous voulons changer la définition de friend:add.

Remplacement de la chaîne

Pour remplacer cette définition, nous ajouterons un fichier linguistique langues au plugin que nous avons construit dans la première étape.

  1. Créez un nouveau répertoire : /mod/<your plugin name>/languages

  2. Créer un fichier dans ce répertoire appelé fr.php

  3. Ajoutez ces lignes à ce fichier

<?php

return array(
   'friend:add' => 'Make a new friend',
);

Assurez-vous que vous n’avez pas d’espace ou de retour à la ligne avant <?php.

Vous avez terminé maintenant et devriez être en mesure d’activer le plugin et de voir le changement. Si vous remplacez la langue d’un plugin, assurez-vous que votre plugin est chargé après celui que vous essayez de modifier. L’ordre de chargement est déterminé dans la page Administration des outils de la section Administrateur. Au fur et à mesure que vous trouverez d’autres choses à changer, vous pouvez continuer à les ajouter à ce plugin.

Comment puis-je trouver le code qui fait X ?

La meilleure façon de trouver le code qui fait quelque chose que vous souhaitez changer est d’utiliser grep ou un outil de recherche similaire. Si grep n’est pas intégré à votre système d’exploitation, vous voudrez installer un outil grep ou utiliser un éditeur de texte/IDE qui dispose d’un bonne recherche dans les fichiers. Notepad++ est un bon choix pour les utilisateurs de Windows. Eclipse avec PHP et NetBeans sont de bons choix pour n’importe quelle plateforme.

Exemple de chaîne - String

Supposons que vous souhaitez trouver où se trouve le code de la boîte de Connexion. Une chaîne de la zone Connexion qui devrait être suffisamment unique est Se souvenir de moi - « Remember me ». Faites un grep pour cette chaîne. Vous constaterez qu’elle n’est utilisée que dans le fichier fr.php - ou en.php pour la version d’origine - dans le répertoire /languages. Là, il est utilisé pour définir la chaîne Internationalisation user:persistent. Faites maintenant un grep pour cette chaîne. Vous la trouverez en deux endroits : le même fichier linguistique fr.php et dans /views/default/forms/login.php. Ce dernier emplacement définit le code html qui constitue la boîte Connexion.

Exemple d’Action

Supposons que vous souhaitez trouver le code qui s’exécute lorsqu’un utilisateur clique sur le bouton Enregistrer après avoir agencé les widgets sur une page de profil. Consultez la page du Profil d’un utilisateur de test. Utilisez Firebug pour inspecter le html de la page jusqu’à ce que vous trouviez l’action du formulaire de widgets de modification. Vous verrez que l’URL depuis la racine est action/widgets/move.

Faites un grep sur widgets/move et deux fichiers sont retournés. L’un est le code JavaScript pour les widgets : /js/lib/ui.widgets.js. L’autre, /engine/lib/widgets.php, est l’endroit où l’action est enregistrée à l’aide de elgg_register_action('widgets/reorder'). Vous ne connaissez peut-être pas cette fonction : dans ce cas, vous devriez consulter sa page dans la référence de l’API. Effectuez une recherche sur la fonction et cela renverra la documentation de la fonction. Cela vous indique que l’action se trouve à l’emplacement par défaut puisqu’un emplacement de fichier n’a pas été spécifié. L’emplacement par défaut des actions est /actions de sorte que vous trouverez le fichier dans /actions/widgets/move.php.

Mode de débogage

Durant le processus d’installation, vous avez peut-être remarqué une case à cocher qui contrôlait si le mode débogage était activé ou désactivé. Ce paramètre peut également être modifié dans la page Administration du site. Le mode de débogage écrit beaucoup de données supplémentaires dans votre journal php. Par exemple, lorsque vous utilisez ce mode, chaque requête dans la base de données est écrite dans vos journaux. Cela peut être utile pour le débogage d’un problème, mais peut produire une quantité énorme de données qui peuvent ne pas être liées du tout au problème recherché. Vous pouvez expérimenter avec ce mode pour comprendre ce qu’il fait, mais assurez-vous d’exécuter Elgg en mode normal sur un serveur de production.

Avertissement

En raison de la quantité de données enregistrées, il est préférable de ne pas l’activer sur un serveur de production car cela peut remplir les fichiers journaux très rapidement.

Que contient le journal en mode débogage ?

  • Toutes les requêtes de base de données

  • Profilage des requêtes de base de données

  • Durée de génération de page

  • Nombre de requêtes par page

  • Liste des fichiers linguistiques du plugin

  • Des erreurs/avertissements supplémentaires par rapport au mode normal (il est très rare que ces types d’erreurs soient liées à un problème que vous pourriez avoir)

À quoi ressemblent les données ?

[07-Mar-2009 14:27:20] Query cache invalidated
[07-Mar-2009 14:27:20] ** GUID:1 loaded from DB
[07-Mar-2009 14:27:20] SELECT * from elggentities where guid=1 and ( (1 = 1)  and enabled='yes') results cached
[07-Mar-2009 14:27:20] SELECT guid from elggsites_entity where guid = 1 results cached
[07-Mar-2009 14:27:20] Query cache invalidated
[07-Mar-2009 14:27:20] ** GUID:1 loaded from DB
[07-Mar-2009 14:27:20] SELECT * from elggentities where guid=1 and ( (1 = 1)  and enabled='yes') results cached
[07-Mar-2009 14:27:20] ** GUID:1 loaded from DB
[07-Mar-2009 14:27:20] SELECT * from elggentities where guid=1 and ( (1 = 1)  and enabled='yes') results returned from cache
[07-Mar-2009 14:27:20] ** Sub part of GUID:1 loaded from DB
[07-Mar-2009 14:27:20] SELECT * from elggsites_entity where guid=1 results cached
[07-Mar-2009 14:27:20] Query cache invalidated
[07-Mar-2009 14:27:20] DEBUG: 2009-03-07 14:27:20 (MST): "Undefined index:  user" in file /var/www/elgg/engine/lib/elgglib.php (line 62)
[07-Mar-2009 14:27:20] DEBUG: 2009-03-07 14:27:20 (MST): "Undefined index:  pass" in file /var/www/elgg/engine/lib/elgglib.php (line 62)
[07-Mar-2009 14:27:20] ***************** DB PROFILING ********************
[07-Mar-2009 14:27:20] 1 times: 'SELECT * from elggentities where guid=1 and (  (access_id in (2) or (owner_guid = -1) or (access_id = 0 and owner_guid = -1)) and enabled='yes')'
...
[07-Mar-2009 14:27:20] 2 times: 'update elggmetadata set access_id = 2 where entity_guid = 1'
[07-Mar-2009 14:27:20] 1 times: 'UPDATE elggentities set owner_guid='0', access_id='2', container_guid='0', time_updated='1236461868' WHERE guid=1'
[07-Mar-2009 14:27:20] 1 times: 'SELECT guid from elggsites_entity where guid = 1'
[07-Mar-2009 14:27:20] 1 times: 'UPDATE elggsites_entity set name='3124/944', description='', url='http://example.org/' where guid=1'
[07-Mar-2009 14:27:20] 1 times: 'UPDATE elggusers_entity set prev_last_action = last_action, last_action = 1236461868 where guid = 2'
[07-Mar-2009 14:27:20] DB Queries for this page: 56
[07-Mar-2009 14:27:20] ***************************************************
[07-Mar-2009 14:27:20] Page /action/admin/site/update_basic generated in 0.36997294426 seconds

Quels événements sont déclenchés sur chaque chargement de page ?

Il y a 4 événements Elgg qui sont déclenchés sur chaque chargement de page :

  1. plugins_boot, system

  2. init, system

  3. ready, system

  4. shutdown, system

Les trois premiers sont déclenchés dans Elgg\Application::bootCore. shutdown, system est déclenché dans \Elgg\Application\ShutdownHandler après que la réponse a été envoyée au client. Ils sont tous documentés.

Il existe d’autres événements déclenchés par Elgg occasionnellement (par exemple lorsqu’un utilisateur se connecte).

Copie d’un plugin

Il y a beaucoup de questions posées sur la façon de copier un plugin. Disons que vous voulez copier le plugin blog afin d’exécuter un plugin appelé blog et un autre appelé poetry. Ce n’est pas difficile, mais cela demande beaucoup de travail. Vous auriez besoin de

  • changer le nom du répertoire

  • changer les noms de toutes les fonctions (avoir deux fonctions avec le même nom provoque un plantage de PHP)

  • modifier le nom de chaque vue (afin de ne pas remplacer les vues du plugin d’origine)

  • modifier tous les sous-types du modèle de données

  • modifier le fichier linguistique

  • changer tout le reste de ce qui était spécifique au plugin d’origine

Note

Si vous essayez de cloner le plugin groups, vous aurez la difficulté supplémentaire que le plugin de groupe ne définit pas de sous-type.