Manuel PHP
Précédent | Chapitre 6. Installation sur les système Windows | Suivant

# 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...

- ..les win32 buildtools de PHP, sur http://www.php.net/extra/win32build.zip.

- ..le code source du résolveur de noms DNS utilisé par PHP sur http://www.php.net/extra/bindlib_w32.zip. C'est un remplacement pour la bibliothèque `resolv.lib` inclue dans `win32build.zip`.

- Si vous prévoyez de compiler PHP comme module pour Apache, vous aurez aussi besion des sources d'Apache.

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.

- Créez un dossier où tous les fichiers seront placés après l'extraction, par exemple : `C:\work`.

- Créez le dossier `win32build` dans votre dossier de travail (ici `C:\work`) et décompressez `win32build.zip` dedans.

- Créez le dossier `bindlib_w32` sous votre dossier de travail (ici `C:\work`) et décompressez `bindlib_w32.zip` dedans.

- Décompressez le code source de PHP dans votre dossier de travail (`C:\work`).

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 :

- Fichiers exécutables : `c:\work\win32build\bin`, Utilisateurs Cygwin : `cygwin\bin`

- Fichiers d'en-têtes : `c:\work\win32build\include`

- Fichiers bibliothèques : `c:\work\win32build\lib`

## 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 :

- Pour les utilisateurs de l'interface graphique, lancez VC++, puis sélectionnez le menu "File => Open Workspace", naviguez dans le répertoire `c:\work\bindlib_w32` et sélectionnez le fichier `bindlib.dsw`. Puis sélectionnez "Build=>Set Active Configuration" et sélectionnez la configuration voulue. Enfin, sélectionnez "Build=>Rebuild All".

- Pour les utilisateurs en ligne de commande, assurez-vous que vous avez enregistré les variables d'environnement C++, ou que vous avez exécuté vcvars.bat. Exécutez maintenant l'une des commandes suivantes :

  - `msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"`

  - `msdev bindlib.dsp /MAKE "bindlib - Win32 Release"`

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.

- Pour les utilisateurs GUI, lancez VC++, puis sélectionnez le menu "File => Open Workspace" et sélectionnez `c:\work\php-4.x.x\win32\php4ts.dsw`. Ensuite, sélectionnez le menu "Build=>Set Active Configuration", et sélectionnez la configuration voulue, soit php4ts - Win32 Debug_TS ou php4ts - Win32 Release_TS. Finalement, sélectionnez le menu "Build=>Rebuild All".

- Pour les utilisateurs en ligne de commande, assurez-vous que vous avez enregistré les variables d'environnement C++, ou que vous avez exécuté vcvars.bat. Exécutez maintenant l'une des commandes suivantes depuis le dossier `c:\work\php-4.x.x\win32` :

  - `msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"`

  - `msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"`

  - A ce stade, vous avez un exécutable `php.exe` utilisable, soit dans votre dossier `c:\work\php-4.x.x.\Debug_TS` soit sans le sous dossier `Release_TS`.

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.

Précédent | Sommaire | Suivant
Installation Xitami sur Microsoft Windows | Niveau supérieur | Installation des extensions sous Windows