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

Articles connexes

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 rewritemodule modules/modrewrite.so »

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

Oliv

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

Un grand merci à… Oliv, pour son commentaire sur l’url rewrite desactivé par défaut sur apache. Ca m’a enfin débloqué.

Merci aussi à l’auteur de ce post, bien sûr :)

Bonjour ,

J’ai essayé d’installé cakePHP sur un serveur debian 4.0 . CakePHP m’a retourné des erreurs que j’ai corrigé,à savoir : -autorisation d’écriture dans app/temp/ -modification du grain de sel de sécurité -création du fichier /app/config/database.php

Aprés avoir rajouté le fichier de configuration de la BDD,la page d’acceuil de cakePHP est devenu basique (4 phrases sans CSS …) alors que le CSS était présent auparavant.

Ce problème peut – il venir du fait que j’utilise postgresql au lieu de mysql?

Parce que sinon je vois pas …

Merci !

Merci à l’auteur de cet article. Etonné de la qualité constante, article par article. Bravo!

Question: vous dites qu’il ne faut mettre que le dossier APP dans le dossier du projet.

Or, sur la doc officielle, ils disent : »

When you download CakePHP, you will see three main folders. The app folder will be where you work your magic: it’s where your application’s files will be placed. The cake folder is where we’ve worked our magic. Make a personal commitment not to edit files in this folder. We can’t help you if you’ve modified the core. Finally, the vendors folder is where you’ll place third-party PHP libraries you need to use with your CakePHP applications.

Du coup je ne sas pas trop ce que je dois faire. Je vous soupçonne d’avoir réparti les autres dossiers « core » à un endroit commun à toutes vos applications, pour que toutes bénéficient automatiquement des mises à jour, mais je ne suis pas sûr… pourriez-vous expliquer/ clarifier ce point ?

Grand merci, A.

Excusez mon dernier commentaire: j’ai réagi avant de lire la fin de l’article. Cela dit, ce serait bien de rajouter une brève phrase notant cette configuration de vos fichiers pour l’utilisateur qui n’a pas lu l’article sur l’Environnement de travail…

Autre remarque: le lien vers la capture d’écran finale est incorrect (nom de domaine .dev au lieu de .com) http://formation-cakephp.com/wp-content/uploads/2007/11/cakephpinstallationok.gif

Merci pour l’adresse de l’image, j’ai corrigé

Bonjour, j’avais quelques questions sur ce framework. Je ne vois pas par ou commencer lors d’un début de projet. Ou placer la page index ? sous quelle forme ce présente des pages type de vue , modèle , contrôleur. Il y a t’il un include à faire dans chaque page pour appeler le framework voilà donc toute les questions que je me pose et disons que je bloque vraiment pour le début je ne sais vraiment pas par quoi commencer.

Avant tout je te conseille de commencer par bien lire le manuel (Cookbook) ici : http://book.cakephp.org/fr Et notamment le tutorial de création d’un blog : http://book.cakephp.org/fr/view/219/Blog

Ensuite tu pourras parcourir les articles de ce site en commençant par les plus anciens.

Bienvenue dans la communauté francophone de CakePHP, et bon courage ;)

Bonjour,

cette configuration de repertoire virtuel est-elle toujours valable pour apache 2.2 ? J’avais l’impression que le repertoire virtuel se definissait dans le httpd.conf ? – mais je me trompe peut etre ;) -

Bonjour,

En suivant pas a pas cet article, j’obtiens quelque chose qui fonctionne, mais les les CSS/images ne sont plus pris en compte, certainement un problème de rewrite.mod.

Cependant j’ai bien les fichiers .htaccess présents, et j’ai modifie le httpd.conf (en fait je suis passe de easyphp a xampp avec une configuration plus propre, mais cette partie ne fonctionne plus). Je ne sais plus quoi faire, auriez-vous une idée (j’ai bien regarde la doc et fait ce qui était préconisé)?

[...] Formation-cake Share and Enjoy: [...]

Grand merci, tout a fonctionné du premier coup (c’est quand même plutôt rare…). J’espère avoir autant de succès avec le reste.

[...] Super important, pensez à créer un répertoire virtuel http://www.formation-cakephp.com/3/demarrer-un-projet-cakephp, sinon vous aurez le préfix de langue qui va se balader un peu partout au mauvais endroit. Dans [...]

Merci pour ce tuto,

petite info, décommenter la ligne

Include conf/extra/httpd-vhosts.conf

dans : C:\wamp\bin\apache\Apache2.2.11\conf\httpd.conf

sinon les domaines déclarés dans httpd-vhosts.conf ne seront pas pris en compte.

Participez

Pour insérer une portion de code, utilisez <pre lang="php">...</pre>