Compilation des sources

Avant de commencer, il est bon de se poser la question suivante : "Pourquoi la compilation de PHP sous Windows est si difficile?". Deux raisons viennent immédiatement à l'esprit :

  1. Windows ne dispose pas (encore) d'une grande communauté de développeurs qui partagent librement leurs sources. La conséquence directe est que les investissements nécessaires en infrastructure pour supporter ce type de développement n'ont pas été faits. Ce qui fait que le portage des utilitaires Unix a été la solution pour pallier ce manque. Ne soyez donc pas surpris de rencontrer cette parenté de temps en temps.

  2. La majorité des instructions que vous allez rencontrer sont du type : "faire et oublier". Alors, asseyez-vous confortablement et suivez aussi scrupuleusement que possible les instructions.

Pré-requis

Pour compiler l'exécutable PHP, vous avez besoin d'un Microsoft Development Environment. Microsoft Visual C++ 6.0 est recommendé. Pour extraire le fichier téléchargé, vous avez besoin d'un outil de décompression (e.g.: Winzip). Si vous n'avez pas encore d'utilitaire de décompression, vous pouvez en télécharger un chez InfoZip.

Avant de commencer, vous devez télécharger...

Finalement, vous aurez besoin des sources PHP elles-mêmes. Les dernières versions sont accessibles sur le serveur CVS anonyme. Vous pouvez aussi télécharger une version intermédiaire ou l'archive des sources la plus récente.

Compiler tout ensemble

Après téléchargement des paquets nécessaires, vous devez les extraire au bon endroit.

Après avoir suivi ces instructions, vous devriez obtenir un dossier qui ressemble à ceci :

Exemple 6-8. Structure de la distribution source pour compilation sous Windows

+--c:\work
|  |
|  +--bindlib_w32
|  |  |
|  |  +--arpa
|  |  |
|  |  +--conf
|  |  |
|  |  +--...
|  |
|  +--php-4.x.x
|  |  |
|  |  +--build
|  |  |
|  |  +--...
|  |  |
|  |  +--win32
|  |  |
|  |  +--...
|  |
|  +--win32build
|  |  |
|  |  +--bin
|  |  |
|  |  +--include
|  |  |
|  |  +--lib
Créez les dossiers c:\usr\local\lib. Copiez le fichier bison.simple depuis >c:\work\win32build\bin vers c:\usr\local\lib.

Note : Les utilisateurs de Cygwin peuvent omettre la dernière étable. Un environnement Cygwin correctement installé fournit les fichiers obligatoires de bison.simple et bison.exe.

Configuration de MVC ++

L'étape suivante est la configuration de MVC ++ pour préparer la compiler. Lancez Microsoft Visual C++, et allez dans le menu "select Tools => Options". Dans le dialogue, sélectionnez l'onglet "directories". Modifiez les valeurs pour les éléments du menu Executables, Includes et Library. Votre configuration doit alors ressembler à ceci :

Compilation de resolv.lib

Vous devez compiler la bibliothèque resolv.lib. Decidez si vous avez besoin des symboles de débogage (bindlib - Win32 Debug) ou non (bindlib - Win32 Release). Compilez la configuration ad hoc :

A ce stade, vous avez une bibliothèque resolv.lib utilisable, soit dans votre dossier c:\work\bindlib_w32\Debug, soit sans le dossier Release. Copiez ce fichier dans votre dossier c:\work\win32build\lib, en remplaçant le fichier du même nom.

Compilation

La meilleure façon de compiler est de commander par la version CGI/exécutable.

Il est possible de faire des modifications particulières mineures en éditant le fichier main/config.win32.h.in. Par exemple, vous pouvez changer la localisation du php.ini, des extensions internes ainsi que la localisation par défaut de ces extensions.

Ensuite, vous pouvez compiler la version CLI qui est conçue pour un usage en ligne de commande de PHP. Les étapes sont les mêmes que pour la compilation en mode CGI, hormis le fait que vous devez sélectionner php4ts_cli - Win32 Debug_TS ou php4ts_cli - Win32 Release_TS dans le fichier de projet. Après une compilation réussie, vous pouvez exécuter le fichier php.exe dans l'un des dossiers Release_TS\cli\ ou Debug_TS\cli\.

Note : Si vous voulez utiliser PEAR et l'installeur en ligne de commande, la version CLI-SAPI est obligatoire. Pour plus d'informations sur le projet PEAR et l'installeur, lisez la documentation sur le site de PEAR.

Afin de compiler le module SAPI (php4isapi.dll pour l'intégrer dans Microsoft IIS, vous devez utiliser la configuration php4isapi-whatever-config et compiler la DLL nécessaire.