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

  • creating a directory under /mod that does not contain a plugin

  • un mauvais transfert FTP

  • unzipping a plugin into an extra directory (myplugin.zip unzips to 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 :

  • corrupted file: try transferring the code again to your server

  • a call to a php module that was not loaded: this can happen after you install a plugin that requires a specific module.

  • bad plugin: not all plugins have been written to the same quality so you should be careful which ones you install.

To find where the error is occurring, change the .htaccess file to display errors to the browser. Set display_errors to 1 and load the same page again. You should see a PHP error in your browser. Change the setting back once you’ve resolved the problem.

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

If you have to log in twice to your site and the error message after the first attempt says there was a token mismatch error, the URL in Elgg’s settings does not match the URL used to access it. The most common cause for this is adding or removing the « www » when accessing the site. For example, www.elgg.org vs elgg.org. This causes a problem with session handling because of the way that web browsers save cookies.

To fix this, you can add rewrite rules. To redirect from www.elgg.org to elgg.org in Apache, the rules might look like:

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

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

RewriteCond %{HTTP_HOST} ^elgg\.org
RewriteRule ^(.*)$ https://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.

If you experience this on a new installation, make sure that your server is properly configured and your rewrite rules are correct. If you experience this on an upgrade, make sure you have updated your rewrite rules either in .htaccess (Apache) or in the server configuration.

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

To take your site temporarily offline, go to Administration -> Configure -> Maintenance Mode. Complete the form and hit save to disable your site for everyone except admin users.

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.';
}

Be sure to replace your_email@your_host.com with your actual email address. Take care to keep quotes around it! When you access this page through your web browser, it will attempt to send a test email. This test will let you know that PHP and your MTA are correctly configured. If it fails:

  • either you get an error or you never receive the email

  • you will need to do more investigating and possibly contact your service provider.

Fully configuring an MTA and PHP’s email functionality is beyond the scope of this FAQ and you should search the internet for more resources on this. Some basic information on php parameters can be found on PHP’s site

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 – The error log is probably in /var/log/httpd or /var/log/apache2.

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

  • Mac OS - The error log is probably in /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

By default, all users who self-register must validate their accounts through email. If a user has problems validating an account, you can validate users manually by going to Administration -> Administer -> Users and check the Unvalidated tab.

You can remove this requirement by deactivating the « User Validation by Email » plugin.

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 ?

You may want to change PHP settings in your .htaccess file. This is especially true if your hosting provider does not give you access to the server’s php.ini file. The variables could be related to file upload size limits, security, session length, or any number of other PHP attributes. For examples of how to do this, see the PHP documentation on this.

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.

I know PHP and MariaDB and have a legitimate reason to edit the database. Is it okay to manually edit the database?

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 does not like working with sites that use both http://example.org and http://www.example.org. It stores multiple cookies and this causes problems. Best to only use one base URL. For details on how to do this see Login token mismatch error.

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

Session length is controlled by your PHP configuration. You will first need to locate your php.ini file. In that file will be several session variables. A complete list and what they do can be found in the php manual.

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.

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

Make sure the data directory’s path is correct in the settings.php file. It should have a trailing slash.

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.

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

When your Elgg installation is behind a proxy server or load balancer the IP addresses logged in the System Log plugin can be wrong. It could show only the IP addresses for the proxy server.

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 trois IDE gratuits les plus populaires pour les développeurs PHP sont Eclipse et NetBeans et Codelobster. 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.