Installation
Installer CakePHP peut-être aussi simple que le déposer dans le Document Root de votre serveur web ou bien aussi complexe et souple que vous le souhaitez. Cette section couvrira les 3 types d’installations principaux : développement, production et avancé.
- Développement : facile à mettre en oeuvre, mais les URLs de l’application contiennent le nom du répertoire d’installation de CakePHP et c’est moins sécurisé.
- Production : nécessite d’être habilité à configurer le Document Root du serveur, URLs propres, très sécurisé.
- Avancé : avec un peu de configuration, vous permet de placer les répertoires clés de CakePHP à différents endroits du système de fichiers, avec la possibilité de partager un seul répertoire de la librairie centrale CakePHP entre plusieurs applications.
Développement
Placez simplement votre installation de Cake dans le Document Root de votre serveur web. Par exemple, considérant que votre Document Root est /var/www/html, une configuration « développement » devrait ressembler à cela dans le système de fichier :
- /var/www/html
- /cake_1_2
- /app
- /cake
- /docs
- /index.php
- /vendors
- /cake_1_2
Pour voir votre application CakePHP, pointez votre navigateur internet à l’adresse : http://www.exemple.com/cake_1_2/
Production
Dans le but d’utiliser une configuration de production, vous aurez besoin d’avoir les droits pour modifier le Document Root de votre serveur web. Choisir la configuration « production » signifie que le domaine entier agit comme une seule application CakePHP.
La configuration de production utilise l’agencement suivant :
- /chemin_d_installation_cake/
- /app
- /webroot (répertoire est défini comme le Document Root du serveur web)
- /cake
- /docs
- /index.php
- /vendors
Si cette application devait être hébergée sous Apache, la directive DocumentRoot pour le domaine devrait ressembler à quelque chose comme cela :
DocumentRoot /chemin_d_installation_cake/app/webroot
DocumentRoot /chemin_d_installation_cake/app/webroot
Pour voir votre application CakePHP, pointez votre navigateur à l'adresse : http://www.exemple.com.
Installation avancée
Il peut y avoir des situations où vous souhaitez placer les répertoires de CakePHP à différents endroits du système de fichiers. Cela peut être du à des restrictions en hébergement mutualisé ou peut-être que vous voulez simplement partager vos librairies Cake entre plusieurs de vos applications. Cette section décrit comment dérouler vos répertoires CakePHP à travers un système de fichiers.
D’abord, sachez qu’il y a 3 parties principales dans une application Cake :
- Les librairies du cœur de CakePHP, dans /cake.
- Le code de votre application, dans /app
- La racine web de l’application, habituellement dans /app/webroot
Chacun de ces répertoires peut être situé n’importe où dans votre système de fichier, à l’exception de /webroot, qui doit être accessible via votre serveur web. Vous pouvez même déplacer ce répertoire webroot en dehors du répertoire app, tant que vous dites à Cake où vous le mettez.
Pour configurer votre installation Cake, vous aurez besoin de faire quelques modifications dans le fichier /app/webroot/index.php. Il y a trois constantes que vous devrez éditer : ROOT, APP_DIR, et CAKE_CORE_INCLUDE_PATH.
- ROOT devrait être défini sur le chemin du répertoire qui contient votre dossier /app
- APP_DIR devrait être défini sur le chemin du répertoire /app lui-même
- CAKE_CORE_INCLUDE_PATH devrait être défini sur le chemin de votre dossier des librairies CakePHP
Lançons-nous dans un exemple, ainsi vous pourrez voir à quoi doit ressembler, en pratique, une installation avancée. Imaginez que je veuille configurer CakePHP pour fonctionner de la manière suivante :
- Les librairies du cœur de CakePHP seront placées dans /usr/lib/cake.
- Le répertoire webroot de mon application sera placé dans var/www/monsite/
- Le répertoire app de mon application sera placé dans /home/moi/monsite.
Etant donné ce type de configuration, j’aurais besoin d’éditer mon fichier /webroot/index.php (qui se trouvera à /var/www/monsite/index.php, dans cet exemple) afin qu’il ressemble à ce qui suit :
// /app/webroot/index.php (partiel, commentaires supprimés)
if (!defined('ROOT')) {
define('ROOT', DS.'home'.DS.'moi');
}
if (!defined('APP_DIR')) {
define ('APP_DIR', 'monsite');
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');
}
// /app/webroot/index.php (partiel, commentaires supprimés)if (!defined('ROOT')) {define('ROOT', DS.'home'.DS.'moi');}if (!defined('APP_DIR')) {define ('APP_DIR', 'monsite');}if (!defined('CAKE_CORE_INCLUDE_PATH')) {define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake');}
Il est recommandé d'utiliser la constante DS (directory separator) plutôt que les slashs pour délimiter les chemins de fichier. Cela évite toute erreur de fichier introuvable que vous pourriez avoir en utilisant un mauvais délimiteur et cela rend votre code davantage portable.
Chemins de classes additionnels
C’est parfois pratique de pouvoir partager les classes MVC entre applications au sein d’un même système. Si vous voulez le même contrôleur dans 2 applications, vous pouvez utiliser le fichier bootstrap.php de CakePHP pour disposer de ces classes additionelles dans une vue.
Dans bootstrap.php, définissez quelques variables nommées de façon particulière pour rendre CakePHP conscient des autres emplacements de classes MVC à explorer :
$viewPaths = array(); $controllerPaths = array(); $modelPaths = array(); $helperPaths = array(); $componentPaths = array(); $behaviorPaths = array();
$viewPaths = array();$controllerPaths = array();$modelPaths = array();$helperPaths = array();$componentPaths = array();$behaviorPaths = array();
Chacune de ces variables spéciales peut être définie par un tableau de chemins absolus dans le système de fichiers, indiquant où les classes complémentaires peuvent être trouvées quand elles sont demandées. Assurez-vous que chaque chemin spécifié contienne un slash terminal.
Apache et mod_rewrite
Bien que CakePHP soit architecturé pour travailler avec mod_rewrite tel quel – et il le fait – nous avons remarqué que certains utilisateurs se battent pour obtenir quelque chose qui marche bien sur leurs systèmes. Voici quelques astuces que vous devriez essayer pour le faire fonctionner correctement :
- Assurez-vous qu’une réécriture .htaccess est permise. Dans votre httpd.conf, vous devriez avoir une section qui définit votre Répertoire sur le serveur. Vérifiez que AllowOverride est défini sur All pour le DocumentRoot adéquat.
- Assurez-vous que vous avez édité le httpd.conf du système et non celui d’un utilisateur ou d’un site spécifique.
- Est-ce que CakePHP a perdu ses fichiers .htaccess obligatoires ? Cela arrive parfois durant la copie ou le déplacement, parce que certains systèmes d’exploitation traitent les fichiers qui commencent par un "." comme des fichiers cachés. Assurez-vous que votre copie de CakePHP provient de la section de téléchargement du site ou de notre dépôt SVN et qu’il a été décompacté correctement.
- Assurez-vous que vous chargez mod_rewrite correctement. Vous devriez voir quelque chose comme "LoadModule rewrite_module libexec/httpd/mod_rewrite.so" et "AddModule mod_rewrite.c" dans votre httpd.conf.
- Si vous avez installé CakePHP dans un répertoire utilisateur (http://exemple.com/~nom_utilisateur), vous devrez modifier le fichier .htacess dans le répertoire de base de votre installation CakePHP. Ajoutez seulement "RewriteBase /~nom_utilisateur"
Faites chauffer !
Parfait, voyons CakePHP à l'œuvre. Selon la configuration que vous avez utilisé, vous devriez pointer votre navigateur web à l’adresse : http://exemple.com/ ou bien : http://exemple.com/installation_cake/. Vous vous trouvez alors en présence de la page d’accueil par défaut de CakePHP et un message vous informe du statut actuel de votre connexion à la base de données.
Félicitations ! Vous êtes prêts à créer votre première application CakePHP.

login to add a comment