Démarrer un projet CakePHP

Nous allons voir en 5 étapes la création d’un nouveau projet CakePHP sous Windows avec Xampp et Eclipse PDT. Nous souhaitons pouvoir placer notre travail dans le dossier C:\Sites\ en créant un sous répertoire à chaque nouveau projet.

1. Hôte virtuel

La première étape consiste à créer un hôte virtuel avec un nom de domaine qui ne sera accessible que sur notre machine. Cela donne une certaine souplesse dans le développement du projet : d’une part cela nous affranchit de travailler dans le dossier www\ de Xampp, et d’autre part l’url du projet sera du type http://monprojet.dev au lieu de http://127.0.0.1/monprojet ou http://localhost/monprojet.

1.1 Hôte virtuel sous Windows

Commençons par enregistrer le nom de domaine de notre projet sous Windows. Ouvrons le fichier suivant dans un simple éditeur de texte, type Bloc-notes :

C:\WINDOWS\system32\drivers\etc\hosts

Ce fichier comporte la seule ligne non commentée suivante :

20
127.0.0.1 localhost

Ajoutons une ligne :

20
21
127.0.0.1 localhost
127.0.0.1 test.dev

avant d’enregistrer et de fermer l’éditeur.

1.2 Hôte virtuel sous Apache

Nous devons maintenant enregistrer ce nouveau nom de domaine dans le serveur Apache, afin que celui-ci sache à quel répertoire du disque associer le domaine. Rappelons que nous souhaitons travailler dans le dossier C:\Sites\ dans lequel nous créerons un sous-répertoire par projet, ici test\. Editons le fichier suivant de la même façon que le précédent :

C:\Program Files\xampp\apache\conf\extra\httpd-vhosts.conf

et ajoutons les lignes suivantes à la fin du fichier :

69
70
71
72
73
74
75
76
77
78
79
# Hôte virtuel du nom de domaine test.dev
<VirtualHost test.dev:80>
 DocumentRoot "C:/Sites/test/webroot/"
 ServerName test.dev
 <Directory "C:/Sites/test/webroot/">
 	Options Indexes FollowSymLinks
 	AllowOverride FileInfo
 	Order allow,deny
 	Allow from all
 </Directory>
</VirtualHost>

avant d’enregistrer et de fermer l’éditeur. Rendons-nous dans la console de Xampp pour stopper et redémarrer Apache afin que les ajouts que nous venons de faire soient pris en compte.

2. Définition du projet dans Eclipse PDT

Lors de l’installation d’Eclipse PDT, nous avions défini le dossier de travail ou workspace comme étant C:\Sites\. Après avoir lancé Eclipse PDT, nous choisissons File > New > PHP Project. Nous renseignons uniquement le champ “Project name” : test. Le programme va créer lui-même le dossier test\ dans le workspace.

3. Arborescence et fichiers de base

Lors du téléchargment de CakePHP, nous avons pu trouver un dossier app\ comprenant l’arborescence de base et les fichiers nécessaires au démarrage d’un projet. Dans l’explorateur de fichiers Windows, nous copions tout le contenu de ce répertoire app\ dans le répertoire C:\Sites\test\, créé automatiquement par Eclipse PDT à l’étape 2.

Nous pouvons retourner sur Eclipse PDT, cliquer sur le répertoire nommé “test” et presser la touche F5 pour rafraîchir la vue et voir tous les dossiers et fichiers copiés.

4. Création d’une base de données

L’installation de xampp inclue le gestionnaire de base de données MySQL, ainsi qu’une interface d’administration en PHP, phpMyAdmin. Ouvrons un navigateur et rendons-nous à l’url suivante :

http://localhost/phpmyadmin/

Dans le champ “Créer une base de données” nous saisissons “bdd_test” et cliquons sur “Créer”.

5. Configuration de CakePHP

L’équipe de développement de CakePHP explique dans le manuel avoir préféré les conventions à la configuration. Démarrer un projet CakePHP nécessite de modifier 3 fichiers en tout et pour tout !

5.1 Connexion à la base de données

Renommons le fichier suivant :

C:\Sites\test\config\database.php.default

en :

C:\Sites\test\config\database.php

et ouvrons-le dans Eclipse. Les lignes 73 à 94 montrent :

73
74
75
76
77
78
79
80
81
82
83
84
var $default = array(
 'driver' => 'mysql',
 'persistent' => false,
 'host' => 'localhost',
 'port' => '',
 'login' => 'user',
 'password' => 'password',
 'database' => 'database_name',
 'schema' => '',
 'prefix' => '',
 'encoding' => ''
);

Modifions les paramètres pour définir notre propre configuration :

73
74
75
76
77
78
79
80
81
82
83
84
var $default = array(
 'driver' => 'mysql',
 'persistent' => false,
 'host' => 'localhost',
 'port' => '',
 'login' => 'root',
 'password' => '',
 'database' => 'bdd_test',
 'schema' => '',
 'prefix' => '',
 'encoding' => ''
);

Nous pouvons sauvegarder les changements et fermer le fichier.

5.2 Chemins d’accès aux fichiers de CakePHP

Nous allons indiquer à notre nouveau projet où se trouvent les fichiers du coeur de CakePHP sans lesquels il ne peut bien évidemment fonctionner.

Ouvrons le fichier suivant :

C:\Sites\test\webroot\index.php

Changons la ligne 56 :

56
define('CAKE_CORE_INCLUDE_PATH', ROOT);

en remplaçant ROOT par le répertoire où se trouvent les fichiers du coeur de CakePHP, pour nous :

56
define('CAKE_CORE_INCLUDE_PATH', 'C:/Program Files/xampp/php/CakePHP');

Sauvegardons les changements et essayons de nous connecter à notre nouveau projet par le nom de domaine, ouvrons pour cela un navigateur et appelons l’url http://test.dev

S’affiche à l’écran :

Capture d’écran : installation de CakePHP terminée.

5.3 Le fichier de configuration générale

CakePHP nous annonce que tout s’est bien déroulé, mais que pour des raisons de sécurité nous devons changer une valeur dans le fichier de configuration qui se trouve ici :

C:\Sites\test\config\core.php

Ouvrons-le et nous trouvons à la ligne 149 la clé Security.salt dont la valeur est une chaine des caractères incompréhensible. Modifions-en quelques-uns au hasard et enregistrons. Cette fois-ci, l’installation est terminée et notre nouveau projet est créé.

Pierre-Emmanuel Fringant

Commentaires

Pour la définition des noms d’hôtes, pour que les cookies fonctionnent correctement, il vaut mieux des noms du types :
xxx.mondomaine.test
ou
test.mondomaine.com

test.dev peut poser problème.

Je n’ai jamais constaté de souci avec les cookies en ne définissant pas de sous-domaine… Pouvez-vous nous en dire un peu plus ?

Bonsoir,

Je suis nouveau dans le monde du gateau mais voici comment je considère le security.salt.

Concernant le grain de sel, vous indiquez de “modifier quelques unes des valeurs de la chaine fournie par défaut”. Cela ne risque t’il pas de causer des problèmes d’utiliser une chaine aléatoire “non maitrisée”. En effet, que ce passera t il si par erreur vous écrasez le fichier de configuration en question ?
Vous ne retrouverez jamais la même clé. Et dans ce cas, l’accès aux anciennes données sera impossible. Imaginez vous de la réaction de vos visiteurs lorsqu’ils tenteront de s’authentifier et qu’ils trouveront un message d’erreur lié au grain de sel… Ca la fout mal :-s

J’ai opté pour une chaine de caractère dont je suis le seul à connaître la contenance (un peu comme un mot de passe) que je hashe (md5). De ce fait, si j’écrase le fichier de configuration, je pourrais toujours le retrouver en hashant à nouveau ma chaine de caractères.

Peut être que je me trompe et que ce salt n’est pas utilisé dans le cadre de l’enregistrement de mots de passe dans cake, mais dans ce cas, je n’en verrais pas l’utilité.

Vous avez raison cette chaine est utilisée par le composant Auth pour hasher les mots de passe, il faut bien évidemment faire attention à na pas changer ce paramètre après la mise en ligne.
Votre solution est un bon remède à l’étourderie. On peut aussi imaginer stocker la chaine dans une table isolée de la base.

Bonjour,

J’ai installé CakePHP ce midi et j’ai rencontré des difficultés à valider mon premier essai avec une application très basique.

En effet, CakePHP fonctionnant avec de l’URL Rewriting, il faut juste ne pas oublier de l’activer dans le httpd.conf en enlevant le commentaire devant la ligne “LoadModule rewrite_module modules/mod_rewrite.so”

Ceci étant dit, je peux aller cake-kiffer ! :)

Oliv

La configuration de l’environnement de travail est expliquée ici

Participez