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

# Compilation des sources

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.

## Pré-requis

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

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

- les utilitaires de compilation win32 depuis le site PHP sur http://www.php.net/extra/win32build.zip.

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

## Compiler tout ensemble

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 :

    +--C:\work
                 |  |
                 |  +--bindlib_w32
                 |  |  |
                 |  |  +--arpa
                 |  |  |
                 |  |  +--conf
                 |  |  |
                 |  |  +--...
                 |  |
                 |  +--php-5.x.x
                 |  |  |
                 |  |  +--build
                 |  |  |
                 |  |  +--...
                 |  |  |
                 |  |  +--win32
                 |  |  |
                 |  |  +--...
                 |  |
                 |  +--win32build
                 |  |  |
                 |  |  +--bin
                 |  |  |
                 |  |  +--include
                 |  |  |
                 |  |  +--lib

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.

## Construction de resolv.lib

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.

## Construction de PHP en utilisant le nouveau système de construction [PHP >=5 uniquement]

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.

> Note : Ce système de construction n'est pas disponible pour PHP 4. Référez-vous plutôt à la section intitulée Compilation de PHP en utilisant les fichiers DSW [PHP 4].

Avant de commencer, assurez-vous d'avoir lu la section intitulée Compiler tout ensemble et d'avoir construit toutes les bibliothèques nécessaire, comme Libxml ou ICU (nécessaire pour PHP >= 6).

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.

## Compilation de PHP en utilisant les fichiers DSW [PHP 4]

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.

### Configuration de MVC ++

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 :

- Executable files: `C:\work\win32build\bin`, Cygwin users: `C:\cygwin\bin`

- Include files: `C:\work\win32build\include`

- Library files: `C:\work\win32build\lib`

### Compilation

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

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

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

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

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