Quand on possède un serveur de production qui héberge plusieurs projets web qu'on a nous-même développé, on a tendance à dupliquer les librairies d'un projet à l'autre, que ce soit le volumineux Zend Framework ou tout simplement des librairies JavaScript utiles comme jQuery ou Prototype.
Sans compter l'espace occupé par la duplication des fichiers, qu'arrive-t-il lorsque vient le temps de mettre à jour les versions ? On doit nécessairement appliquer les changements à chaque projet.
Il existe une façon de le faire d'un seul coup pour en faire bénéficier tout le monde en partageant les librairies. Mais ceci nécessitera quelques configurations au niveau du serveur Apache et de PHP.
- Dans le fichier de configuration d'Apache httpd.conf, assurez-vous que le module mod_alias soit activé :
LoadModule alias_module modules/mod_alias.so - Créez un alias :
Linux :
Alias /shared chemin/vers/répertoire/partagé/
Windows :
Alias /shared "D:/répertoire/partagé/"
Lorsque le serveur reconnaîtra l'alias /shared, il résoudra automatiquement vers le chemin spécifié comme deuxième argument. Dans nos pages web, on pourra faire référence à une librairie comme ceci :
<script type="text/javascript" src="shared/jquery/jquery-1.3.2.min.js"></script>
Le truc : passer par un include path que nous attacherons automatiquement à tous nos fichiers grâce à l'instruction prepend file.
- Créer un fichier prepend.php qui contiendra les trois lignes suivantes :
<?php
$path = 'chemin/vers/librairies/php/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);- Indiquez le chemin vers votre/vos librairie(s) à partager, par exemple le Zend Framework.
- Ne fermez pas la balise PHP! Ceci évitera qu'un espace ou un saut de ligne se retrouve envoyé par erreur dans les headers de vos autres fichiers PHP.
- Il est important d'utiliser get_include_path() pour conserver les anciens chemins définis ailleurs dans l'application, autrement nous écraserions la liste qui ne contiendrait que $path.
- Déposez le fichier prepend.php sur le serveur
- Maintenant, il faut donner l'instruction à PHP d'inclure prepend.php à chaque fois qu'un fichier PHP est appelé. Nous avons deux choix : soit l'inclure de façon globale dans php.ini, soit le mettre dans chaque projet par le fichier .htaccess.
php.ini :
auto_prepend_file /chemin/vers/prepend.php
.htaccess :
php_value auto_prepend_file /chemin/vers/prepend.php
require_once('Zend/Mail.php');
Pour être certain que tout fonctionne correctement, assurez-vous de bien tester cette configuration sur un serveur de développement.
Enfin, pour chaque composant, je vous recommande de toujours créer un répertoire /latest/ qui contiendra la version la plus récente de la librairie. Lorsque vous développerez, vous pourrez y référer plutôt qu'à une version spécifique et il sera beaucoup plus facile de mettre à jour tous vos sites en même temps.