Ce chapitre va vous apprendre à compiler PHP depuis les sources sous Windows,
en utilisant les utilitaires Microsoft. Pour compiler PHP avec Cygwin, référez-vous
à Chapitre 4.
Pour compiler et construire PHP, vous devez avoir un environnement de développement.
Microsoft Visual C++ 6.0 est recommandé, mais les versions Visual C++ .NET
fonctionnent également. Depuis PHP 5, les utilitaires libres Microsoft .NET sont
également supportés (vous devez installer Windows Platform SDK, Visual C++ Toolkit et
.NET Framework SDK).
Pour extraire les fichiers téléchargés, vous avez également besoin d'un utilitaire
d'extraction de fichiers ZIP. Windows XP et supérieur inclut en natif cette fonctionnalité.
le code source pour l'utilitaire de résolution de nom DN utilisé par PHP sur
http://www.php.net/extra/bindlib_w32.zip. C'est un remplacement
à la bibliothèque resolv.lib incluse dans
win32build.zip.
Si vous avez prévu de compiler PHP en tant que module Apache, vous devez également
avoir les sources d'Apache.
Finalement, vous avez besoin des sources de PHP elles-mêmes. Vous pouvez
récupérer la dernière version de développement en utilisant
le CVS anonyme, un
snapshot ou la version compressée la plus récente
des sources.
Après avoir téléchargé les paquets requis, vous devez les extraire dans un
endroit approprié :
Créez un dossier de travail où vous y placerez tous les fichiers décompressés, e.g :
C:\work.
Créez le dossier win32build dans votre dossier de
travail (C:\work) et décompressez
le fichier win32build.zip dans ce dossier.
Créez un dossier bindlib_w32 dans votre dossier de
travail (C:\work) et décompressez
le fichier bindlib_w32.zip dans ce dossier.
Décompressez les sources PHP téléchargées dans votre dossier de travail
(C:\work).
Construisez les bibliothèques dont vous avez besoin (ou téléchargez les binaires
s'ils sont disponibles) et placez les en-têtes et les bibliothèques respectivement
dans les dossiers
C:\work\win32build\include et
C:\work\win32build\lib.
Si vous n'avez pas cygwin d'installé avec bison et flex, vous devez
aussi rendre le dossier C:\work\win32build\bin disponible dans le
PATH, alors ces outils peuvent être trouvés par le script de
configuration.
Si vous avez correctement suivi les étapes précèdentes, vous devez obtenir la structure suivante :
Si vous utilisez Cygwin, vous devez également créer les dossiers
C:\usr\local\lib, puis copier le fichier
bison.simple depuis
C:\work\win32build\bin dans le dossier
C:\usr\local\lib.
Note :
Si vous voulez utiliser PEAR ainsi que son installeur en ligne de commande,
CLI-SAPI est nécessaire. Pour plus d'informations sur PEAR et son installeur,
lisez la documentation sur le site web de
PEAR.
Vous devez construire la bibliothèque resolv.lib.
Décidez si oui ou non vous voulez de disponible les symboles de débogage
(bindlib - Win32 Debug) ou pas (bindlib - Win32 Release) ; mais souvenez-vous de
ce choix, car la construction du débogage ne se lit avec PHP que lorsqu'il est
également construit en mode débogage.
Construisez la configuration appropriée :
Pour les utilisateurs de GUI, lancez VC++ en double-cliquant sur le
fichier C:\work\bindlib_w32\bindlib.dsw. Puis, sélectionnez
"Build=>Rebuild All".
Pour les utilisateurs de lignes de commande, assurez-vous d'avoir soit
les variables d'environnement C++ de disponibles, soit d'avoir exécuté
vcvars.bat, puis exécutez une des commandes
suivantes :
msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"
msdev bindlib.dsp /MAKE "bindlib - Win32 Release"
À ce point, vous devez avoir une bibliothèque utilisable de resolv.lib
dans le dossier C:\work\bindlib_w32\Debug ou
dans le sous-dossier Release. Copiez ce fichier dans votre dossier
C:\work\win32build\lib en écrasant le fichier
portant le même nom.
Ce chapitre explique comment compiler PHP >=5 en utilisant le nouveau
système de construction, basé sur CLI et extrèmement similaire au système de
construction Unix pour PHP.
D'abord, vous devez ouvrir un prompt de commande Visual Studio, qui
doit être disponible avec le menu Démarrer. Un prompt de commande
classique ne fonctionnera pas, car il n'aura probablement pas les variables
d'environnement nécessaires. Puis, tapez quelque chose comme
cd C:\work\php-5.x.x pour entrer dans le dossier
contenant les sources de PHP. Maintenant, vous êtes prêt à configurer PHP.
La seconde étape consiste à exécuter le fichier buildconf
afin de lancer le script de configuration, en scannant le dossier à la recherche des fichiers
config.w32. Par défaut, cette commande recherchera également
dans les dossiers suivants : pecl;
..\pecl; pecl\rpc; ..\pecl\rpc. Depuis PHP 5.1.0, vous pouvez changer
ce comportement en utilisant l'argument --add-modules-dir
(e.g. cscript /nologo win32/build/buildconf.js
--add-modules-dir=../php-gtk2 --add-modules-dir=../pecl).
La troisième étape consiste en la configuration. Pour voir la liste des options de
configuration, tapez la commande cscript /nologo configure.js
--help. Après avoir choisi les options à activer ou non, tapez
quelque chose comme : cscript /nologo configure.js --disable-foo
--enable-fun-ext. En utilisant l'argument --enable-foo=shared,
vous tenterez de construire l'extension 'foo' en tant que module partagé, dynamiquement
chargeable.
La dernière étape est la compilation. Pour ce faire, entrez simplement la commande
nmake. Les fichiers générés (e.g. .exe et .dll) seront
placés soit dans le dossier Release_TS,
soit dans le dossier Debug_TS (si
vous avez compilé avec le Thread safety), ou sinon, dans le dossier
Release ou le dossier
Debug.
Optionnellement, vous pouvez vouloir exécuter une suite de tests PHP en tapant
la commande nmake test. Si vous ne voulez effectuer
qu'un test précis, vous devez utiliser la variable 'TESTS' (e.g. nmake /D TESTS=ext/sqlite/tests
test - exécutera que les tests sqlite). Pour effacer les fichiers créés
pendant la compilation, vous pouvez utiliser la commande nmake
clean.
Une option de configuration vraiement utile pour la construction de snapshots
est l'option --enable-snapshot-build, qui ajoute un nouveau mode
de compilation (nmake build-snap). Celui-ci tente
de compiler chaque extension de disponible (en tant que partagée par défaut) en
ignorant les erreurs de compilation dans les extensions individuelles ou SAPI.
La compilation de PHP en utilisant les fichiers DSW n'est plus supportée
depuis PHP 5 car un système plus
flexible a été mis à disposition. Malgré tout, vous pouvez continuer à l'utiliser
mais gardez à l'esprit que ce système n'est plus maintenu régulièrement, vous pourriez
donc rencontrer des problèmes lors de la compilation. Cependant, pour compiler PHP 4
sous Windows, il n'y a que ce système de disponible.
La première étape consiste à la configuration de MVC++ pour la préparation
à la compilation. Lancez Microsoft Visual C++ et depuis le menu, sélectionnez
"Tools => Options". Dans la fenêtre de dialogue, sélectionnez la tabulation
des dossiers. Séquentiellement, modifier la liste en
"Executables", "Includes", et "Library files". Votre entrée devrait ressembler à ceci :
La meilleure façon de commencer est de compiler la version CGI :
Pour les utilisateurs d'interface, lancez VC++, sélectionnez "File => Open Workspace"
puis, sélectionnez C:\work\php-4.x.x\win32\php4ts.dsw.
Alors, sélectionnez "Build=>Set Active Configuration" et sélectionnez la configuration
désirée, soit php4ts - Win32 Debug_TS, soit
php4ts - Win32 Release_TS. Et pour finir, sélectionnez
"Build=>Rebuild All".
Pour les utilisateurs de la ligne de commande, assurez-vous d'avoir de disponible
les variables d'environnements C++ ou d'avoir exécuté le fichier
vcvars.bat, puis, exécutez une des commandes suivantes
depuis le répertoire C:\work\php-4.x.x\win32 :
À ce stade, vous devez avoir un binaire php.exe
fonctionnel dans le dossier
C:\work\php-4.x.x\Debug_TS ou dans le sous-dossier
Release_TS.
Il est possible de faire quelques personnalisations sur le processus de compilation
en éditant le fichier main/config.win32.h. Par exemple,
vous pouvez modifier le dossier par défaut contenant le php.ini, les extensions internes
et le dossier par défaut de vos extensions.
Puis, vous pourriez vouloir compiler la version CLI qui est destinée à utiliser
PHP depuis la ligne de commande.
Les étapes sont les mêmes que pour la compilation de la version CGI, mise à part
que vous devez sélectionner le fichier de projet php4ts_cli - Win32 Debug_TS
ou php4ts_cli - Win32 Release_TS. Après une compilation réussie, vous
devriez trouver le fichier php.exe dans le dossier
Release_TS\cli\ ou dans le dossier
Debug_TS\cli\.
Pour compiler le module SAPI (php4isapi.dll) pour intégrer
PHP avec Microsoft IIS, définissez votre configuration active Ã
php4isapi-whatever-config et compilez la bibliothèque dll désirée.