Ce document s’adresse aux personnes qui ont un premier contact avec drupal et a à celles qui ont besoin d’un guide pour les aider à utiliser drupal.
Les thèmes abordés dans ce document resteront donc volontairement simplistes pour permettre aux plus débutant de ne pas se perdre dans trop de technique.
Ce manuel décrit étape par étape la démarche à suivre pour installer correctement Drupal. Nous ne parlerons pas de l’installation d’un serveur web comme apache ni d’une base de donnée comme MySQL, ce manuel étant avant tout destiné aux personnes souhaitant installer Drupal sur la page perso de leur fournisseur d’accès.
Avant de continuer, Drupal nécessite un certain nombre d’éléments pour pouvoir fonctionner correctement. Ainsi, vous aurez besoin :
Note : il est recommandé d’utiliser un serveur web apache avec une base de données MySQL. Toutefois, les autres combinaisons sont possibles mais peuvent être moins testées et ne pas avoir autant de fonctionnalitées (par exemple certains modules additionnels peuvent ne pas être développés pour une base de données PostgreSQL). A cet égard, et pour les débutants, les «packs» :
peuvent être un bon support de départ.
Nous allons dans un premier temps, mettre en place les fichiers de Drupal sur le serveur. Mais avant de faire cela, nous allons télécharger sur notre disque dur la dernière version de Drupal sur le site officiel. Une fois téléchargé, nous obtenons un fichier nommé drupal-x.y.z.tar.gz où x.y.z correspond au numéro de version de Drupal.

Ce fichier est une archive que nous allons maintenant décompresser sur notre disque dur. La décompression de l’archive va créer un répertoire nommé drupal-x.y.z. C’est dans ce répertoire que se trouvent les fichiers que nous allons mettre sur notre serveur.
Mettre les fichiers sur le serveurL’envoi des fichiers sur le serveur sur votre espace se fait par l’intermédiaire d’un accès FTP (File Transfert Protocol : protocole de transfert de fichiers). Si vous ne savez pas comment accéder à votre espace via FTP, contactez votre hébergeur ou reportez-vous à sa documentation.
Une fois que vous êtes connecté sur votre espace via FTP, copiez tous les fichiers du répertoire drupal-x.y.z sur votre espace.
Note : ne copiez pas le répertoire lui même, mais seulement son contenu. Note : si sur votre espace, il y a un répertoire nommé public_html, copiez les fichiers dans ce répertoire.
Une fois que cette étape est faite, nous pouvons commencer la configuration de notre site web.
Avant de passer à la configuration de drupal proprement dite, nous devons d’abord faire une étape importante : remplir la base de donnée.
Remplir la base de donnéesUne base de donnée est un moyen de stocker des informations et de pouvoir y accéder de manière optimale. Nous n’allons pas véritablement remplir la base de données, pas au sens d’y insérer de l’information, mais nous allons donner à la base de donnée un modèle pour permettre à drupal de pouvoir stocker convenablement nos données.
Le fichier que nous devons donner à la base de données se trouve dans le répertoire database.
Pour mener à bien cette étape, vous devez avoir un accès à votre base de donnée. La plupart des hébergeurs fournissent un accès grâce à l’interface web phpMyAdmin. Cette interface est généralement accessible via une url du type http://sql.monhebergeur.com (ex : http://sql.free.fr pour les sites hébergés chez Free).
Accédez à l’url de phpMyAdmin et entrez les identifiants que vous a fournis votre hébergeur.
Une fois les identifiants validés, et sous réserve que vous les avez correctement entré, vous arrivez sur la page d’accueil de phpMyAdmin. Dans la partie de gauche un menu déroulant vous permet d’accéder à votre base de donnée (en général le menu déroulant ne possède qu’une seule entrée). Sélectionnez votre base de donnée dans ce menu déroulant, puis cliquez sur l’onglet Importer accessible dans le haut de la partie principale.
Sur cette page, vous y trouverez un champ dans lequel vous pouvez choisir un fichier de votre disque dur. Renseignez y le fichier mysql41.sql qui se trouve dans le répertoire database. Une fois ce champ remplit, cliquez sur le bouton importer. phpMyadmin va alors charger le ficher dans votre base de donnée.
Si vous avez réalisé cette étape avec succès, nous pouvons alors continuer notre installation de drupal. L’étape qui vient à présent, est la configuration de drupal pour votre site. Cette configuration nécessite de modifier le fichier sites/default/settings.php que nous avons placé sur notre espace web quand nous avons copié les fichiers sur le serveur. Dans ce fichier, nous devons n’avons qu’une seule ligne à modifier. modifiez la ligne :
$db_url = 'mysql://username:password@localhost/databasename';
en remplaçant username par l’identifiant que vous a fournit votre hébergeur, password par votre mot de passe (le mot de passe pour accéder à la base de données), et enfin database par le nom de votre base de données. La pluspart du temps, le nom de votre base de donnée correspond au nom de votre identifiant.
Nous voici désormais à la fin de la partie la plus délicate de l’installation, et nous pouvons dès maintenant accéder à notre site via son url.
L’installation de Drupal dans sa version 5 (et maintenant 6) se voit considérablement facilitée. Une fois votre base de données créée, il vous suffit de visiter l’adresse de votre site. Renseignez l’écran suivant avec vos identifiants de connexion à la base de données (nom de la base de données, utilisateur et mot de passe).
Après la validation, l’installeur va créer les tables dans la base de données, et remplir automatiquement des paramètres de départ.
Pour la suite de l’installation, poursuivez ci-dessous.
Lorsque que l’on accède à notre site web pour la première fois, nous arrivons sur la page suivante.
Page d’accueil de Drupal lors de la première utilisation
Il nous faut maintenant créer un compte utilisateur. Pour cela il faut cliquer sur Create new account. On arrive alors sur un formulaire de création de compte nous demandant le nom du compte ainsi qu’une adresse mail. Ce premier compte servira de compte administrateur pour le site.
Une fois Drupal installé, il est temps de le traduire en français, si cela n’est pas déjà fait.
Cette page vous explique comment obtenir la traduction.
Dans tous les cas, vous devez activer le module Locale, dans la page d’administration des modules (Administer / Site building / Modules).
L’installation de la traduction se fait différemment selon la version de Drupal :
fr.po, que vous pouvez importer en vous rendant dans Administer / Site configuration / Localization, onglet Import :cp -R chemin_du_dossier_fr/. chemin_du_dossier_drupalL’opération d’importation peut prendre plusieurs minutes. Tout dépend de votre vitesse de connexion Internet et de la puissance de votre serveur.
Résolutions de problèmesSi vous obtenez des erreurs de type «permission denied» après l’importation, exécutez la ligne de commande suivante :
find -name *fr.po -type f -print | xargs chmod 744
Elle aura pour effet de mettre des droits (chmod) corrects sur les fichiers *fr.po
Et voilà ! Drupal est maintenant correctement installé chez votre fournisseur d’accès. La dernière étape est de constater le résultat sur votre page perso. Vous devez créer un compte utilisateur sur votre site web. Ce premier compte est très important car il sera utilisé comme compte administrateur de Drupal.
Une dernière chose, il est possible que vous ayez des erreurs dues à un problème de droits d’accès dans le répertoire temporaire. Dans ce cas connectez-vous avec votre compte administrateur et allez dans les paramètres de Drupal (administer/settings). Vous trouverez un champ dans lequel il y a «/tmp». Changez la valeur et mettez «tmp» à la place sans le «/» devant.
Je vous laisse découvrir Drupal et ces nombreuses fonctionnalités. Si vous rencontrez des problèmes lors de l’installation de Drupal, posez vos questions sur le forum de ce site.
Solutions données sur le forum sur les problèmes que certaines personnes ont pu rencontrés lors de l’installation de drupal ou de la première utilisation.
Suite à de nombreux messages sur le forum concernant l’installation de Drupal sur Free.fr et la spécificité de cet hébergeur, voici une documentation relatant pas à pas la mise en place d’un site Drupal chez Free.
Ce document est un wiki, vous pouvez donc y apporter des modifications.
ToDo : - la procédure qui suit oblige de «mettre les mains dans le cambouis», je pense qu’il serait peut être utile de stocker quelque part tous les fichiers modifiés. Cependant, il s’agit de voir si c’est réellement une bonne solution sachant que cela impliquerait une certaine maintenance (mise à jour lors des nouvelles versions) et une certaine confiance vu qu’il s’agirait de télécharger des sources depuis un site autre que Drupal.org. - analyser plus en détails les fichiers .htaccees pour permettre leur usage.
Remerciements : Ce document est principalement le fruit du fil Drupal 5.0 sur free.fr ? auquel ont apporté leur aide mccricri, koda, francisXV, qwerkus, gemac et votre humble serviteur.
La modification des sources de DrupalFree à l’avantage de proposer gratuitement un hébergement de 10Go avec une base MySQL (ou PosgreSQL), cependant il vient avec quelques restrictions qui nous imposent de modifier le core de Drupal :(
Ses fonctions principales sont :
Ce fichier permet de dire à Apache d’activer ou pas certaines options et de configurer certaines variables. Cependant, pour une raison jusqu’à présent inconnue (cf ToDo), Free n’aime pas le fichier .htaccess de Drupal et affiche une vilaine erreur 500. A quelques exeptions près (voir plus loin), il faut donc effacer ce fichier.
Conséquences : - Les fichiers sources de Drupal qui contiennent des extensions spéciales deviennent alors visibles à toute personne connaissant leur chemin. Ex : en allant sur /drupal/modules/node/node.module» on pourra voir le source du module node. Certes ce n’est pas bien grave car Drupal étant open Source, cette info est déjà disponible, mais si vous ne souhaitez pas que l’on voit le code de vos propres développement cela est plus ennuyeux. Les fichiers affectés seront les suivants : *.engine, .info, .install, *.module, *.profile, *.po, *.sh - La seconde conséquence un peu plus ennuyeuse est la non activation du module URLrewriting qui permet de réécrire les URLs et donc de permettre les «cleans URLs», du coup cette fonction ne sera pas disponible sur Free pour le moment. - D’autres paramètres ne seront pas initialises (magic_quotes_gpc, register_globals, session.auto_start etc…), cependant cela n’a à priori pas l’air d’impacter le bon fonctionnement de Drupal.
Il est toutefois possible de créer manuellement des fichiers .htaccess respectant les restrictions free dans les répertoires sensibles, pour protéger le fichier settings.php, par exemple. Il suffit d’y charger un fichier .htaccess comportant la ligne deny from all. Notons également que les options suivantes du fichier .htaccess de drupal fonctionnent très bien chez free :
# Don't show directory listings for URLs which map to a directory.
Options -Indexes
# Follow symbolic links in this directory.
Options +FollowSymLinks
# Customized error messages.
ErrorDocument 404 /index.php# Set the default handler.
DirectoryIndex index.phpLors de la configuration de Drupal, il est demandé ou stocker les différents fichiers que les modules peuvent créer (image, audio…), par défaut le répertoire se nomme files. Suite à un avis de sécurité, un fichier .htaccess est automatiquement crée dans ce répertoire. Malheureusement il empêche de faire fonctionner correctement certains modules (image, audio…).
La solution est de commenter le code qui se trouve dans le fichier includes/file.inc pour éviter l’exécution du code qui se trouve entre les lignes 115 et 126
<?php
/* if ((file_directory_path() == $directory || file_directory_temp() == $directory) && !is_file("$directory/.htaccess")) {
$htaccess_lines = "SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006\nOptions None\nOptions +FollowSymLinks";
if (($fp = fopen("$directory/.htaccess", 'w')) && fputs($fp, $htaccess_lines)) {
fclose($fp);
chmod($directory .'/.htaccess', 0664);
}
else {
$message = t("Security warning: Couldn't write .htaccess file. Please create a .htaccess file in your %directory directory which contains the following lines: <code>!htaccess</code>", array('%directory' => $directory, '!htaccess' => '<br />'. nl2br(check_plain($htaccess_lines))));
form_set_error($form_item, $message);
watchdog('security', $message, WATCHDOG_ERROR);
}
} */
?>Le serveur Apache de Free s’appelle «Proxad» au lieu d’une version traditionnelle 1.x.x ou 2.x.x, cela bloque l’installateur de Drupal.
Pour cela il suffit juste de modifier le fichier modules/system/system.install ligne 40, remplacer REQUIREMENT_ERROR par REQUIREMENT_WARNING :
<?php
case 'Apache':
if (version_compare($version, DRUPAL_MINIMUM_APACHE) < 0) {
$requirements['webserver']['description'] = $t('Your Apache server is too old. Drupal requires at least Apache %version.', array('%version' => DRUPAL_MINIMUM_APACHE));
$requirements['webserver']['severity'] = REQUIREMENT_WARNING;
}
?>LOCK TABLES lors de l’installationMySQL permet à l’utilisateur différents droits sur l’utilisation des tables. Un de ceux ci est le LOCK, qui permet de verrouiller une table et ainsi d’empêcher un autre utilisateur d’écrire lorsqu’une écriture est déjà en cours. Cela permet d’éviter d’insérer deux fois les mêmes données par exemple.
Free ne permettant pas ce droit la, il faut quitter cette vérification lors de l’installation.
Cette modification doit se faire dans le fichier includes/install.mysql.inc lignes 90 à 109 en remplaçant ce bloc par :
<?php
// Test LOCK.
/<em>$query = 'LOCK TABLES drupal_install_test WRITE';
$result = mysql_query($query);
if ($error = mysql_error()) {
drupal_set_message(st('We were unable to lock a test table on your MySQL database server. We tried locking a table with the command %query and MySQL reported the following error: %error.', array('%query' => $query, '%error' => $error)), 'error');
$err = TRUE;
}
else {</em>/
$success[] = 'LOCK';
//}
// Test UNLOCK.
/<em>$query = 'UNLOCK TABLES';
$result = mysql_query($query);
if ($error = mysql_error()) {
drupal_set_message(st('We were unable to unlock a test table on your MySQL database server. We tried unlocking a table with the command %query and MySQL reported the following error: %error.', array('%query' => $query, '%error' => $error)), 'error');
$err = TRUE;
}
else {</em>/
$success[] = 'UNLOCK';
//}
?>LOCK TABLES lors de l’utilisationPour les raisons évoquées ci-dessus il est nécessaire de modifier le fichier includes/database.mysql.inc de la manière suivante :
Ligne 261 à 269 : il faut commenter les 2 appels aux fonctions LOCK :
<?php
function db_next_id($name) {
$name = db_prefix_tables($name);
//db_query('LOCK TABLES {sequences} WRITE');
$id = db_result(db_query("SELECT id FROM {sequences} WHERE name = '%s'", $name)) + 1;
db_query("REPLACE INTO {sequences} VALUES ('%s', %d)", $name, $id);
//db_query('UNLOCK TABLES');
return $id;
}
?><?php
/<strong>
* Lock a table.
*/
function db_lock_table($table) {
//db_query('LOCK TABLES {'. db_escape_table($table) .'} WRITE');
db_query('SELECT 1');
}
/</strong>
* Unlock all locked tables.
*/
function db_unlock_tables() {
//db_query('UNLOCK TABLES');
db_query('SELECT 1');
}
?>Conséquences : Sur un site à faible trafic en écriture (contenus et commentaires) cela ne posera pas de problèmes, sur un site à gros volume, cela risque d’être plus problématique car il se peut qu’à un moment donne Drupal decide d’inserer 2 contenus avec la meme clef primaire ce qui conduira à un vilain message d’erreur. De tout manière, il est clair que Free n’est absolument pas recommande pour un site à fort trafic.
Free par défaut fait tourner les pages php avec la version 4, cependant il semble lui manquer l’extension Mbstring qui sert pour le bon fonctionnement de l’encodage en UTF-8, pour bénéficier de la version 5 de PHP, rien de plus facile, il suffit de renommer le fichier index.php en index.php5.
[mise à jour 18/02] : cela ne suffit pas, il faut modifier le .htaccess comme indiqué en bas de cette page (paragraphe «passer free en php5»). Du coup, le renommage en php5 est inutile.[/maj]
Une fois les sources modifiées, il reste à uploader les fichiers sur votre compte. On supposera que vous avez déjà un espace personnel actif ainsi qu’une base MySQL. Si ce n’est pas le cas, il faut activer tout cela dans votre espace perso.
Rien de bien extraordinaire ici si ce n’est que Free n’accepte pas plus de 2 connexions simultanées, donc il vaut mieux régler son client pour éviter d’avoir des messages d’erreur de la part du serveur de Free. L’upload se fait vers ftp://ftpperso.free.fr avec votre login/password.
Une fois tous les fichiers uploadés, il suffit d’utiliser l’installateur intégré à Drupal 5.
Apparement juste après la fin de l’installation une série d’erreurs apparait : Warning: mysql_real_escape_string(): 10749672 is not a valid MySQL-Link resource in /mnt/.../includes/database.mysql.inc on line 400.
Suite à de nombreuses réactions sur le forum (et une expérience personnelle), il semblerait que l’installation ne se déroule pas très très bien. Cela est peut être du à un temps d’execution maximum des scripts PHP qui serait trop faible.
En allant sur la page d’accueil, l’utilisateur se voit présenter un horrible message : Fatal error: Call to undefined function: filter_xss_bad_protocol() in /mnt/.../includes/common.inc on line 837.
Ceci est dû à une insertion incomplète des données de la table system (entre autres).
Pour palier à ce problème, il faut réinsérer (cliquer sur le nom de votre BDD, puis onglet SQL) les données par défaut. Le script suivant réalise cela :
- effacement des tables
- insertion des données par défaut permettant le bon fonctionnement de Drupal
NB : Il faut penser à rajouter à la main le préfixe des tables si la BDD a été installée avec un préfixe.
-- Delete all datas
TRUNCATE `blocks`;
TRUNCATE `cache`;
TRUNCATE `cache_menu`;
TRUNCATE `filter_formats`;
TRUNCATE `filters`;
TRUNCATE `menu`;
TRUNCATE `node_access`;
TRUNCATE `node_type`;
TRUNCATE `permission`;
TRUNCATE `role`;
TRUNCATE `system`;
TRUNCATE `users`;
TRUNCATE `variable`;
-- Dumping data for table `blocks`
INSERT INTO `blocks` VALUES ('user', '0', 'garland', 1, 0, 'left', 0, 0, 0, '', '');
INSERT INTO `blocks` VALUES ('user', '1', 'garland', 1, 0, 'left', 0, 0, 0, '', '');
-- Dumping data for table `filter_formats`
INSERT INTO `filter_formats` VALUES (1, 'Filtered HTML', ',1,2,', 1);
INSERT INTO `filter_formats` VALUES (2, 'PHP code', '', 0);
INSERT INTO `filter_formats` VALUES (3, 'Full HTML', '', 1);
-- Dumping data for table `filters`
INSERT INTO `filters` VALUES (1, 'filter', 3, 0);
INSERT INTO `filters` VALUES (1, 'filter', 0, 1);
INSERT INTO `filters` VALUES (1, 'filter', 2, 2);
INSERT INTO `filters` VALUES (2, 'filter', 1, 0);
INSERT INTO `filters` VALUES (3, 'filter', 3, 0);
INSERT INTO `filters` VALUES (3, 'filter', 2, 1);
-- Dumping data for table `menu`
INSERT INTO `menu` VALUES (2, 0, '', 'Primary links', '', 0, 115);
-- Dumping data for table `node_access`
INSERT INTO `node_access` VALUES (0, 0, 'all', 1, 0, 0);
-- Dumping data for table `node_type`
INSERT INTO `node_type` VALUES ('page', 'Page', 'node', 'If you want to add a static page, like a contact page or an about page, use a page.', '', 1, 'Title', 1, 'Body', 0, 1, 1, 0, 'page');
INSERT INTO `node_type` VALUES ('story', 'Story', 'node', 'Stories are articles in their simplest form: they have a title, a teaser and a body, but can be extended by other modules. The teaser is part of the body too. Stories may be used as a personal blog or for news articles.', '', 1, 'Title', 1, 'Body', 0, 1, 1, 0, 'story');
-- Dumping data for table `permission`
INSERT INTO `permission` VALUES (1, 'access content', 0);
INSERT INTO `permission` VALUES (2, 'access comments, access content, post comments, post comments without approval', 0);
-- Dumping data for table `role`
INSERT INTO `role` VALUES (1, 'anonymous user');
INSERT INTO `role` VALUES (2, 'authenticated user');
-- Dumping data for table `system`
INSERT INTO `system` VALUES ('themes/engines/phptemplate/phptemplate.engine', 'phptemplate', 'theme_engine', '', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('themes/garland/page.tpl.php', 'garland', 'theme', 'themes/engines/phptemplate/phptemplate.engine', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/system/system.module', 'system', 'module', 'Handles general site configuration for administrators.', 1, 0, 0, 1021, 0);
INSERT INTO `system` VALUES ('modules/aggregator/aggregator.module', 'aggregator', 'module', 'Aggregates syndicated content (RSS, RDF, and Atom feeds).', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/block/block.module', 'block', 'module', 'Controls the boxes that are displayed around the main content.', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/blog/blog.module', 'blog', 'module', 'Enables keeping easily and regularly updated user web pages or blogs.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/blogapi/blogapi.module', 'blogapi', 'module', 'Allows users to post content using applications that support XML-RPC blog APIs.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/book/book.module', 'book', 'module', 'Allows users to collaboratively author a book.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/color/color.module', 'color', 'module', 'Allows the user to change the color scheme of certain themes.', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/comment/comment.module', 'comment', 'module', 'Allows users to comment on and discuss published content.', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/contact/contact.module', 'contact', 'module', 'Enables the use of both personal and site-wide contact forms.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/drupal/drupal.module', 'drupal', 'module', 'Lets you register your site with a central server and improve ranking of Drupal projects by posting information on your installed modules and themes', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/filter/filter.module', 'filter', 'module', 'Handles the filtering of content in preparation for display.', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/forum/forum.module', 'forum', 'module', 'Enables threaded discussions about general topics.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/help/help.module', 'help', 'module', 'Manages the display of online help.', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/legacy/legacy.module', 'legacy', 'module', 'Provides legacy handlers for upgrades from older Drupal installations.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/locale/locale.module', 'locale', 'module', 'Enables the translation of the user interface to languages other than English.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/menu/menu.module', 'menu', 'module', 'Allows administrators to customize the site navigation menu.', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/node/node.module', 'node', 'module', 'Allows content to be submitted to the site and displayed on pages.', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/path/path.module', 'path', 'module', 'Allows users to rename URLs.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/ping/ping.module', 'ping', 'module', 'Alerts other sites when your site has been updated.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/poll/poll.module', 'poll', 'module', 'Allows your site to capture votes on different topics in the form of multiple choice questions.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/profile/profile.module', 'profile', 'module', 'Supports configurable user profiles.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/search/search.module', 'search', 'module', 'Enables site-wide keyword searching.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/statistics/statistics.module', 'statistics', 'module', 'Logs access statistics for your site.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/taxonomy/taxonomy.module', 'taxonomy', 'module', 'Enables the categorization of content.', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/throttle/throttle.module', 'throttle', 'module', 'Handles the auto-throttling mechanism, to control site congestion.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/tracker/tracker.module', 'tracker', 'module', 'Enables tracking of recent posts for users.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/upload/upload.module', 'upload', 'module', 'Allows users to upload and attach files to content.', 0, 0, 0, -1, 0);
INSERT INTO `system` VALUES ('modules/user/user.module', 'user', 'module', 'Manages the user registration and login system.', 1, 0, 0, 0, 0);
INSERT INTO `system` VALUES ('modules/watchdog/watchdog.module', 'watchdog', 'module', 'Logs and records system events.', 1, 0, 0, 0, 0);
-- Dumping data for table `users`
INSERT INTO `users` VALUES (0, '', '', '', 0, 0, 0, '', '', 0, 0, 0, 0, NULL, '', '', '', NULL);
-- Dumping data for table `variable`
INSERT INTO `variable` VALUES ('theme_default', 's:7:"garland";');
INSERT INTO `variable` VALUES ('filter_html_1', 'i:1;');
INSERT INTO `variable` VALUES ('node_options_forum', 'a:1:{i:0;s:6:"status";}');
INSERT INTO `variable` VALUES ('menu_primary_menu', 'i:2;');
INSERT INTO `variable` VALUES ('menu_secondary_menu', 'i:2;');
INSERT INTO `variable` VALUES ('install_profile', 's:7:"default";');
INSERT INTO `variable` VALUES ('node_options_page', 'a:1:{i:0;s:6:"status";}');
INSERT INTO `variable` VALUES ('comment_page', 'i:0;');
INSERT INTO `variable` VALUES ('theme_settings', 'a:1:{s:21:"toggle_node_info_page";b:0;}');chmod ne fonctionne pas chez Free. Voir plus haut pour le protéger autrement avec un .htaccess ou bien en le déplacant dans un autre dossier.
Déplacer /sites/default/settings.php
Le fichier de configuration settings.php n’est pas chmod’able et il est donc accessible en *écriture*. Pour palier à ce défaut de sécurité il faut modifier le fichier bootstrap.inc ligne 202 :
$confdir = 'sites';
par
$confdir = 'MonRepUltraSecreT';
Il faut bien sûr renommer le répertoire «sites» par «MonRepUltraSecreT» ou même le créer (NB : si vous le créez, il faut alors créer également un sous-répertoire MonRepUltraSecreT/default, dans lequel on placera le php.settings).
L’information sera toujours en rouge dans l’administration de drupal mais inaccessible en réalité.
Ajouter la ligne suivante dans le .htaccess
PHP 1
Voila, à l’issue de ce tutoriel vous devriez avoir une installation fonctionnelle de Drupal 5.6, espérons qu’a l’avenir, Drupal 6 simplifiera la tâche.
Bon courage.
Je viens d’installer DRUPAL 4.6.3 sur free. J’ai toujours sur free un autre site DRUPAL mais en 4.5.2 où je n’ai jamais eu ce type de problème.
J’ai commencé à configurer le 4.6.3 comme administrateurs et regulièrement je tombe sur l’erreur suivant : [b]Warning : mysql_connect() : Lost connection to MySQL server during query in /var/www/free.fr/d/3/secretariatgerpisa/includes/database.mysql.inc on line 31 Lost connection to MySQL server during query[/b].
Après un moment toutefois le problème s’en va tout seul. C’est clairement un problème de la sql de free, mais pourquoi seulement avec le 4.6.3 alors que mon installation 4.5.2 n’a jamais eu des problèmes ?
Salut à tous.
j’ai installer drupal suivant le tuto que l’on trouve sur le site et tous c’est bien déroulé, j’ai supprimer le fichier .htacess et je peux me connecter à mon site. mais lorsque j’essaie de créer un premier compte (admin donc)je click sur «create a new account» et il m’affiche le message «l’URL n’est pas valide et ne peut etre chargée !».
je suis sur free voila là je comprend pas, s quelqu’un peut m’aider ! merci.
Voici une solution qui peut intéresser ceux qui ont installé drupal 5.x sur free.fr mais qui sont frustrés de ne pas pouvoir activer l’option «URLs simplifiées (Clean URL)».
Le principeOn fait appel à la redirection 404 (Page non trouvée) vers un script PHP comme décrit sur d’autres billets de ce site. Ce script émule le positionnement des variables super-globales correspondant à une requête HTTP standard. Ceci suffit pour les requêtes HTTP GET.
Pour les requêtes HTTP POST, cela ne marche pas car la redirection 404 oublie les variables POSTées et ce de manière irréversible apparemment. Ici, la solution consiste à débrayer l’option «Clean URL» lors de la soumission de requêtes HTTP POST. Dans la mesure où les modules installés (standards, additionnels ou persos) utilisent tous form.inc, il suffit d’intervenir à deux endroits : theme_form() et theme_hidden().
Tout d’abord ajouter la ligne suivante à votre fichier .htaccess :
ErrorDocument 404 /mod_rewrite.php
Créer un script mod_rewrite.php à la racine de votre site à partir du modèle ci-dessous. Les lignes marquées (*) doivent être modifiées si drupal est installé ailleurs qu’à la racine :
<?php
$url = $_SERVER['REQUEST_URI']; // On récupère l'URL demandée
if(preg_match("^(.*)$/", $url, $match)) // (*) "/^\/dir\/to\/drupal\/(.*)$/"
{
header("HTTP/1.1 200 OK");
$url = $match[1];
$start_query = strpos($url, '?');
if ($start_query !== FALSE) {
$path = substr($url, 0, $start_query);
$query = "q=" . $path . "&" . substr($url, $start_query + 1);
}
else {
$path = $url;
$query = "q=" . $path;
}
$params = explode("&", $query);
foreach($params as $p) {
$fields = explode("=", $p);
$key = $fields[0];
$value = $fields[1];
$_GET[$key] = $value;
$_REQUEST[$key] = $_GET[$key];
}
$_SERVER["REDIRECT_STATUS"] = 200;
$_SERVER["REDIRECT_URL"] = $url;
$_SERVER["QUERY_STRING"] = $query;
$_SERVER["SCRIPT_NAME"] = "/index.php"; // (*) "/dir/to/drupal/index.php"
$_SERVER["SCRIPT_FILENAME"] = $_SERVER['DOCUMENT_ROOT'] . $_SERVER["SCRIPT_NAME"];
$_SERVER["PHP_SELF"] = $_SERVER["SCRIPT_NAME"];
// chdir("dir/to/drupal"); // (*)
include("index.php");
exit();
}
/* Erreur 404: compléter par le code PHP ou HTML à utiliser pour les "vraies" pages non trouvées (autres que celles gérées par drupal)*/
...
?>Modifier les fonctions theme_form() et theme_hidden() contenues dans includes/form.inc comme ci-dessous. On peut évidemment créer ou modifier les fonctions mon_thème_form() et mon_thème_hidden() dans sites/themes/mon_thème/template.php pour éviter de toucher au noyau de drupal. Cependant, puisque celui-ci est déjà largement patché pour fonctionner sur free.fr autant continuer.
<?php
// [...]
/<strong>
* Format a hidden form field.
*
* @param $element
* An associative array containing the properties of the element.
* Properties used: value, edit
* @return
* A themed HTML string representing the hidden form field.
*/
function theme_hidden($element) {
// Patch free.fr
if ($element['#name'] == 'attach-url') {
$element['#value'] = patch_clean_url_exception($element['#value']);
}
// End patch free.fr
return '<input type="hidden" name="'. $element['#name'] . '" id="'. $element['#id'] . '" value="'. check_plain($element['#value']) ."\" " . drupal_attributes($element['#attributes']) ." />\n";
}
// [...]
/</strong>
* Format a form.
*
* @param $element
* An associative array containing the properties of the element.
* Properties used: action, method, attributes, children
* @return
* A themed HTML string representing the form.
*/
function theme_form($element) {
// Patch free.fr
$element['#action'] = patch_clean_url_exception($element['#action']);
// End patch free.fr
// Anonymous div to satisfy XHTML compliance.
$action = $element['#action'] ? 'action="' . check_url($element['#action']) . '" ' : '';
return '<form '. $action . ' method="'. $element['#method'] .'" '. 'id="'. $element['#id'] .'"'. drupal_attributes($element['#attributes']) .">\n<div>". $element['#children'] ."\n</div></form>\n";
}
/**
* Patch free.fr
*
* permet d'utiliser la méthode POST sur les pages dont l'URL a été réécrite (option clean_url=1)
* lorsque cette option est positionnée, les formulaires qui ont pour destination des url réécrites
* sont traités par le script d'exception 404 mod_rewrite.php qui interdit la méthode POST. Le patch
* consiste à forcer les formulaires utilisant POST à débrayer l'option clean_url durant la soumission
* du formulaire.
*
* Deux cas se présentent:
* - attribut action de <form> => modifié dans theme_form()
* - champ caché contenant une URL => modifié dans theme_hidden()
*/
function patch_clean_url_exception($uri){
global $base_url;
$script = 'index.php';
$abs_path = $base_url . "/";
$base_path = base_path();
if ($uri && (strlen($uri) > 0)) {
$path = $uri;
// trim base if any
if (strcmp($abs_path, substr($path, 0, strlen($abs_path))) == 0) {
$path = substr($path, strlen($abs_path));
}
elseif (strcmp($base_path, substr($path, 0, strlen($base_path))) == 0){
$path = substr($path, strlen($base_path));
}
// trim script if any
if (strcmp($script, substr($path, 0, strlen($script))) == 0) {
$path = substr($path, strlen($script));
}
if (substr($path, 0, 1) != '?') {
// option clean_url débrayée sur cette URL
$uri = $base_path . "?q=" . preg_replace('/\?/', '&', $path, 1);
}
}
else {
// base url forcée car on ne sait pas de quelle page on vient
$uri = $base_path . "?q=" . $_GET['q'];
}
return $uri;
}
?>Une fois ces modifications apportées, vous pouvez aller dans le menu d’administration et configurer l’option «Clean URL».
ConclusionCe patch implémente correctement l’option «Clean URL» pour un hébergement drupal sur free.fr, dans la mesure où on n’introduit pas de modules ou de modifications trop spécifiques.
En espérant que ça vous soit utile…
Les premiers pas avec drupal sont parfois difficiles de part sa philosophie qui est différente des autres CMS.
Cette partie est là pour vous aider au mieux dans vos premières utilisations de drupal.
Cette page vous guidera pour la configuration de base de Drupal. Nous considérons que vous possédez une installation fonctionnelle de Drupal. Avant d’aller plus loin, nous vous conseillons également de traduire l’interface de Drupal en français.
Créer le premier utilisateurRendez-vous sur l’adresse de votre site avec votre navigateur Internet. http://exemple.fr

Drupal vous accueille avec un contenu de base, en anglais, qui disparaîtra lorsque vous aurez publié un premier contenu.
Le premier utilisateur (appelé parfois utilisateur #1) a un rôle important. Il sera l’administrateur(trice) général(e) du site, et pourra modifier les paramètres du site, gérer les utilisateurs, activer les modules, etc.
Sur la page de bienvenue, cliquez sur «Create the first account». Renseignez le nom d’utilisateur et l’adresse e-mail. Cliquez sur le bouton «Submit». Drupal crée le compte et envoie un e-mail à l’adresse indiquée.
Vous êtes ensuite redirigé(e) vers la page d’édition de votre compte, sur laquelle vous pouvez modifier votre mot de passe et vos informations personnelles.
Retenez bien le mot de passe (Drupal vous envoie aussi un e-mail récapitulatif contenant votre mot de passe) ou changez-le pour un mot de passe plus facile à retenir.
Prendre en main l’interfaceImmédiatement après l’installation, votre site Drupal présente une configuration par défaut très basique avec peu de modules activés, un seul thème, et des droits utilisateur minimaux.
Regardez le menu de gauche. Le lien «administrer» vous permet de définir les options d’administration de Drupal.

Si vous cliquez sur ce lien, une liste d’événements apparaît.

Il s’agit de l’ensemble des opérations qui ont été réalisées sur votre site. Cette liste est très utile pour surveiller le bon fonctionnement de votre site (les lignes en rouge contiennent les erreurs). Elle est également accessible via administrer > journaux.
Vous pouvez modifier les paramètres de votre site via administrer > paramètres (informations, système de fichiers, affichage des dates, mémoire cache, etc.). Pensez à changer les informations de type nom du site, slogan, mission, pied de page.
Créez un répertoire ‘files’ à la racine de votre installation de Drupal, qui contiendra les fichiers transférés vers le serveur (au moyen du module upload par exemple). Ce répertoire doit être accessible en lecture et écriture. Vous pouvez changer le nom de ce répertoire sur cette page.
Personnaliser le siteVous pouvez activer des modules via «administrer > modules», définir les droits d’accès via «administer > contrôle d’accès».
Vous pouvez choisir un thème différent via «administrer > thèmes». Des modules et des thèmes additionnels sont disponibles sur drupal.org.
La création de contenu, se fait par l’intermédiaire du menu créer un contenu. Quelque soit le type de contenu que vous souhaitez créer, vous passerez toujours (ou presque) par ce menu.

En cliquant sur le lien créer un contenu, une page listant les différents types de contenu avec un texte explicatif s’affiche à l’écran. Nous choisissons, par exemple, de créer une page. Ce type de contenu sert le plus souvent, comme la description l’indique, à créer des pages au contenu statique, que vous placerez dans la navigation de votre site, comme une page «à propos» ou «crédits». Nous choisissons donc de cliquer sur le lien page.

La page de création s’affiche à l’écran, et nous allons décrire les différents éléments qui constituent le formulaire de création de notre page. Ce formulaire est commun à tous les types de contenu, bien qu’il puisse y avoir des options supplémentaires pour certains types, ou encore grâce à des modules qui ajouterons de nouvelles fonctionnalités à votre site.
Examinons le formulaireLe formulaire présente deux champs à remplir ; le premier Titre, et le second Corps. Comme leur nom l’indique, le premier permet de donner un titre à notre page et le second sert à écrire le contenu de notre page. Ces deux champs sont obligatoires et la page ne pourra être créée si l’un d’eux n’est pas rempli.
Jusque là, il n’y a rien de bien compliqué.
Plus bas dans le formulaire, nous pouvons voir plusieurs éléments dont certains sont des listes dépliables dont : Format d’entrée, Paramètres des commentaires, Paramètres du menu, Informations de publication et pour finir Options de publications. Ces options peuvent être modifiées à tout moment, et pas seulement à la création du contenu. Nous allons voir ce qui se cache derrière ces noms peu explicites.
Format d’entréeCe premier bloc d’options permet de choisir le format dans lequel nous souhaitons écrire notre page. Par défaut, ces formats sont au nombre de trois : Filtered HTML, PHP code, et Full HTML. Le premier permet d’écrire notre page en HTML, mais avec certaines restrictions, c’est à dire que certaines balises HTML ne seront pas visibles si elles sont utilisées. Par exemple si vous souhaitez ajouter une image à votre page, vous ne pourrez pas utiliser ce format d’entrée car la balise img est interdite. Vous pourrez bien entendu écrire votre code HTML correspondant, mais l’image ne s’affichera pas. Ce comportement peut être configuré et adapté à vos besoins si vous souhaitez autoriser d’autres balises HTML que celles autorisées par défaut dans drupal. PHP code quand à lui permet d’écrire des scripts PHP qui seront interprétés par le serveur web. Enfin, Full HTML permet d’écrire notre page dans le langage HTML sans aucune restriction. Ces formats d’entrée peuvent être complétés par d’autres formats par l’ajout de modules. De cette manière il est possible d’écrire des pages avec des formats moins compliqué comme le bbcode, le wiki…
Paramètres des commentairesCe bloc d’option permet de définir si oui ou non les utilisateurs du site pourrons ajouter des commentaires à votre page. Bien sûr, seules les personnes qui ont les droits nécessaires pourront écrire des commentaires si vous décidez de les activer.
Ce bloc d’option permet de définir quel utilisateur à créé le contenu, et à quelle date. Ce bloc peut tout simplement être ignoré car drupal le remplit automatiquement. Malgré tout, il peut être utile parfois de le modifier.
Options de publicationLes options de publication sont sans doute les options les plus importantes car, si elles sont mal choisies, elles peuvent rendre votre contenu introuvable pour l’usager de votre site.
Les paramètres du menu permettent d’associer le contenu à un lien dans un menu. Pour en savoir plus, lisez la page concernant les menus.
Drupal n’est pas un CMS comme les autres. Là où la plupart des CMS organisent leur contenu de manière hiérarchique, drupal ne procède pas de cette manière. Drupal gère des listes et le contenu de notre site sera affiché sous forme de listes.
Malgré tout, nous avons la possibilité d’organiser le contenu avec une très grande liberté. Nous allons ici détailler différentes méthodes d’organisation du contenu.
Par défaut, la page d’accueil de drupal liste les 10 derniers contenu du site dont l’option de publication en page d’accueil est cochée. (voir créer du contenu)
Ce comportement est souvent judicieux lorsque l’on souhaite faire un blog ou un site d’actualité, mais reste très rudimentaire et est souvent mal adapté dans la plupart des autres cas. On veut souvent avoir une page de bienvenue comme page d’accueil avec des informations qui permettent de guider l’internaute sur notre site.
Pour réaliser une telle page d’accueil, il faut d’abord créer un contenu de type page (ou autre) puis ensuite définir ce contenu comme page d’accueil de notre site.
Définir un contenu comme page d’accueilIl suffit de se rendre dans administrer/paramètres. Dans le bloc d’option paramètres généraux, renseignez le champ nommé Page de garde par défaut en y mettant l’url relative du contenu que vous souhaitez mettre comme page d’accueil. Si j’ai créé une page dont l’url est http://monsite.com/ ?q=node/17, alors je vais remplir le champ en y mettant node/17.

Voilà ! Votre page d’accueil sera désormais une page statique. Il est bien entendu possible de faire une page d’accueil dynamique en y mettant du code PHP ou en jouant avec les blocs. Certains modules permettent aussi de modifier le comportement de la page d’accueil.
Drupal permet de classer le contenu dans des catégories. Cela permet par exemple, de regrouper des contenus de différents types sous une même dénomination. Il est donc possible de mettre une image, une page, un article ou un billet de blog dans la même catégorie. La gestion des catégories sous drupal est gérée par le module taxonomy.
L’idée des catégoriesSous drupal, les catégories sont définies par deux types d’éléments : les vocabulaires et les termes. Un vocabulaire est un ensemble de termes liés entre eux.
Par exemple, je suis chargé d’un site qui teste des produits, et je souhaite pouvoir classer mes tests en fontion du type de produit testé. Je pourrais donc avoir un vocabulaire nommé «Catégorie» contenant les termes suivant :
Comme nous l’avons vu, créer des catégories sous drupal revient à créer un vocabulaire qui contiendra des termes. Dans administrer/catégories, nous avons la liste des termes et des vocabulaires qui sont créés sur notre site. Bien entendu, pour l’instant il n’y a rien.

Pour créer un vocabulaire, il suffit de cliquer sur l’onglet ajouter un vocabulaire, puis de donner un nom à notre vocabulaire et de sélectionner le type de contenu qui pourra être classé avec ce vocabulaire.

Une fois validé, le vocabulaire sera listé sur la page suivante. Il suffit alors d’ajouter des termes à ce vocabulaire en cliquant sur le lien ajouter des termes
et de donner un nom à notre terme.

Nous voilà avec des catégories que nous pouvons désormais utiliser.
Classer son contenuLors de la création d’un nouveau contenu, un nouveau bloc d’option nommé catégories apparaît et nous propose de choisir un des termes parmis ceux que nous avons créés.

Bien entendu, il est possible d’assigner plusieurs termes d’un même vocabulaire ou des termes de plusieurs vocabulaires à un même contenu. La gestion des catégories sous drupal ne s’arrête pas là et propose bien d’autres possibilités qui seront abordées dans une autre page.
L’une des premières choses que l’on souhaite faire pour organiser son contenu est de pouvoir créer des menus et ainsi proposer une navigation à l’usager.
Avant de continuer, il faut vérifier que le module menu est bien activé. Il l’est par défaut.
La mise en place des menus comporte trois étapes :
Nous allons voir en détail, comment réaliser ces trois aspects.
1 - Créer un menuPour créer un menu, nous allons nous rendre dans administrer/menus. La page de gestion des menus s’affiche.

Nous remarquons qu’il existe déjà deux menus sur notre site. Ils ont été créés par le système lors de l’installation. Le premier, Navigation, correspond au menu de l’utilisateur (celui avec le nom de login comme titre du menu). Le deuxième, Primary links, correspond aux liens primaires. Les liens primaires sont des menus «spéciaux» dans le sens où l’on peut les afficher en les appelant directement depuis un thème.
Pour créer un nouveau menu, il suffit tout simplement de cliquer sur l’onglet ajouter un menu. Le page d’ajout d’un menu s’affiche, et il ne nous reste plus qu’à donner un nom à notre menu en remplissant le champ Titre. Une fois le formulaire validé, nous pouvons alors voir apparaître notre menu dans la liste des menus.
2 - Associer un contenu à un menuIl existe deux manières d’associer un contenu à un menu. La première consiste à le faire au niveau du contenu. Si par exemple je veux une entrée de menu pour une page bien précise, il me suffit de l’éditer et de me rendre dans le bloc d’option Paramètres du menu. Là, il me faut remplir le champ Titre qui donnera son nom au lien dans le menu, le champ Description qui s’affichera dans la bulle d’information au survol de la souris au dessus du lien. La liste déroulante Elément parent permet de définir à quel endroit du menu se trouvera mon entrée. C’est en sélectionnant le parent que l’on définit les menus et sous-menus. Le Poids sert à définir l’ordre d’affichage des liens du menu lorsque plusieurs entrées ont le même parent.

La deuxième méthode consiste à se rendre dans la partie administration/menu de drupal. Il suffit ensuite de cliquer sur l’onglet Ajouter un élément de menu. Nous devons renseigner les mêmes informations que précédemment, ainsi que le chemin qui permet d’accéder au contenu auquel l’entrée sera associée.

La dernière étape consiste à afficher le menu. Dès que l’on crée un menu comme à l’étape 1, drupal va automatiquement créer un bloc qui contiendra notre menu. Pour afficher notre menu, il nous suffit donc simplement d’activer le bloc et de le positionner là où l’on veut. Rendez-vous dans administrer/blocs, repérez la ligne correspondant à votre menu (elle porte le même nom que votre menu), cochez la case dans la colonne Activé puis validez le formulaire.

Dans la partie 1, nous avons vu que le menu Primary links était un peu particulier. En plus de pouvoir l’afficher avec un bloc, il est possible d’y faire appel depuis le thème.