Forum und email

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 à Installation sur les systèmes UNIX.

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 :

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 à Compilation des sources.

Avant de commencer, assurez-vous d'avoir lu Compilation des sources 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.