I. Introduction▲
Juillet 2014 : PHP 6 est abandonné au profit de PHP 7
cf. PHP Wiki - RFC: Name of Next Release of PHPPHP RFC: Name of Next Release of PHP, par Andrea Faulds & Zeev Suraski
et plus précisément : [PHP-DEV] About PHP6, par Eli White (voir également mon commentaire dans la discussion)
J'ai passé du temps à essayer de compiler PHP sous Windows. J'ai finalement réussi, mais cela m'a pris plus de temps que j'aurais aimé. Habituellement, j'utilise les fichiers binaires disponibles sur snaps.php.net, mais, dans ce cas, j'essayais de déterminer si un patch proposé résolvait un défaut spécifique à Windows – j'avais donc réellement besoin de compiler PHP. Je voulais surtout utiliser un environnement de développement « gratuit » et, en tant que débutante au sujet de Windows (et utilisatrice de longue date d'*nix), je me suis heurtée à de nombreux petits détails qui m'ont pris du temps à corriger. J'ai décidé de documenter la démarche que j'ai suivie pour compiler PHP, afin que cela serve à d'autres personnes qui souhaiteraient faire la même chose que moi.
Ces instructions sont destinées à couvrir tout ce que vous devez être en mesure de faire, pour pouvoir compiler PHP sur un système Windows XP. Elles peuvent éventuellement fonctionner sur d'autres systèmes, je n'ai pas vérifié. Aucune connaissance préalable n'est requise, excepté savoir utiliser les fonctions fondamentales (comme mkdir, copy) et savoir utiliser un éditeur (par exemple edit). Aucun logiciel n'est requis, hormis Windows lui-même.
Les instructions ont été testées avec PHP5 et PHP6. La seule différence est que toutes les références à ICU sont ignorées si vous ne compilez pas PHP6.
II. Téléchargement des outils▲
Juillet 2014 : PHP 6 est abandonné au profit de PHP 7
cf. PHP Wiki - RFC: Name of Next Release of PHPPHP RFC: Name of Next Release of PHP, par Andrea Faulds & Zeev Suraski
et plus précisément : [PHP-DEV] About PHP6, par Eli White (voir également mon commentaire dans la discussion)
Avant de commencer à compiler quoi que ce soit, vous devez télécharger un certain nombre d'outils de Microsoft. Cela peut prendre un certain temps, par exemple dans mon cas cela a mis 45 minutes pour installer les outils, alors que j'étais au bureau avec une connexion Ethernet rapide. Depuis chez moi, avec ma connexion large bande passante, cela m'a pris quatre heures et demie pour faire la même chose. Je ne recommande pas une connexion modem si vous avez un moyen de l'éviter. Les outils prennent approximativement 500 Mo d'espace disque.
Visual C++ 2005 Express Edition compiler
- Téléchargez Visual C++ 2005 Express Edition depuis cette page ;
- Vérifiez que vous avez le bon système d'exploitation et processeur pour pouvoir utiliser le compilateur ;
- Cliquez sur télécharger puis exécuter, ou bien sauvegardez sur votre disque puis exécutez si vous préférez ;
- Lisez et acceptez les conditions d'usage et tous les paramètres par défaut ;
- Le compilateur sera installé ici : C:\Program Files\Microsoft Visual Studio 8\ ;
- À la fin, il vous sera demandé de vous enregistrer : cela prend 5 minutes et si vous le ne le faites pas, quelque chose vous agacera.
Windows Server 2003 SP1 PLatform SDK
- Téléchargez le Windows Server 2003 SP1 PLatform SDK depuis cette page ;
- Il y a trois options, j'ai choisi PSDK-x86.exe car j'utilise un système 32 bits - les deux autres sont les systèmes amd64 et ia64 ;
- Cliquez sur télécharger puis exécuter, ou bien sauvegardez sur votre disque puis exécutez si vous préférez ;
- Lisez et acceptez la licence, puis passez les écrans suivants ;
- Sélectionnez l'installation « typical » ;
- Le code sera installé dans C:\Program Files\Microsoft Platform SDK\ ;
- C'est une longue installation - 20 minutes depuis le bureau, 2 heures depuis chez moi.
Il y a une version plus récente de ce SDK, que j'ai trouvée seulement après avoir utilisé la version ci-dessus. La nouvelle version est disponible ici. Je ne l'ai pas essayée, ainsi je ne peux pas dire si cela fonctionne avec ces instructions.
The .NET Framework 2.0 SDK
- Téléchargez le The .NET Framework 2.0 SDK depuis cette page - attention, cela met quelques minutes à charger et peut laisser votre fenêtre active en arrière plan ;
- Dans la page options, sélectionnez simplement Tools (Outils) et Debugger, vous n'avez pas besoin des exemples et de la doc ;
- Choisissez le répertoire par défaut pour l'installation (le même que Visual C++) ;
- C'est un long téléchargement - deux heures depuis chez moi.
Un utilitaire pour extraire les fichiers tar :
- Il existe un certain nombre de ces outils ; j'ai pris celui-ci et tout a fonctionné : j'ai simplement téléchargé et suivi les instructions d'installation.
III. Récupérer PHP et ses prérequis▲
Juillet 2014 : PHP 6 est abandonné au profit de PHP 7
cf. PHP Wiki - RFC: Name of Next Release of PHPPHP RFC: Name of Next Release of PHP, par Andrea Faulds & Zeev Suraski
et plus précisément : [PHP-DEV] About PHP6, par Eli White (voir également mon commentaire dans la discussion)
Tout d'abord, choisissez la structure que vous voulez donner à votre environnement de compilation. J'utilise e:\zoe\BUILDS donc chaque fois que je me réfère à ce répertoire, vous devriez mettre le vôtre à la place.
Il m'a semblé que le plus simple pour extraire des fichiers .zip sous Windows est de les ouvrir avec l'Explorer et de choisir « Extraire tous les fichiers ».
À la fin de cette section, la structure de sous-répertoires doit ressembler à ceci :
|
|-winbld32
|
e:\zoe\BUILDS - |-bindlib
|
|-icu
|
|-php6.0YYYYMMDDHHmm (or php5.0YYYYMMDDHHmm if you are building PHP5)
|
- Placez les Windows build tools dans e:\zoe\BUILDS (win32build.zip) ;
- Extrayez le fichier ZIP dans e:\zoe\BUILDS\win32build ;
- Extrayez bindlib dans e:\zoe\BUILDS\bindlib\ ;
- Récupérez les bibliothèques ICU, extrayez-les dans e:\zoe\BUILDS\icu ;
- Récupérez PHP - J'ai utilisé le site des snaps et téléchargé le fichier .tar.gz. Je l'ai copié dans mon répertoire e:\zoe\BUILDS et utilisé l'utilitaire tar (étape #1) pour extraire le contenu vers e:\zoe\BUILDS\php6.0-YYYYMMDDHHmm.
icu4c-3_6-Win32-msvc7_1.zip 6.1MB Windows (win32 x86 32-bit) Visual Studio.Net 2003 (MSVC 7.1)
IV. Configurer l'environnement de compilation▲
Juillet 2014 : PHP 6 est abandonné au profit de PHP 7
cf. PHP Wiki - RFC: Name of Next Release of PHPPHP RFC: Name of Next Release of PHP, par Andrea Faulds & Zeev Suraski
et plus précisément : [PHP-DEV] About PHP6, par Eli White (voir également mon commentaire dans la discussion)
Avant de pouvoir compiler, un peu de configuration est requise afin de faire en sorte que Visual Studio Express reconnaisse le SDK, et de dire aux outils de compilation où ils peuvent trouver les bibliothèques dont PHP a besoin. Pour référence, flex et bison font partie du répertoire win32build et ICU est dans le répertoire ICU. Bien sûr, si vous compilez PHP5 vous n'aurez pas besoin d'ICU.
Ajouter les chemins d'accès au script vsvars32.bat▲
Dans le répertoire C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\, éditez vsvars32.bat pour inclure les références au Platform SDK dans PATH, INCLUDE et LIB.
@set
PATH=
C:\
Program Files\
Microsoft Visual Studio 8
\
Common7\
IDE;C:\
Program Files\
Microsoft Visual Studio 8
\
VC\
BIN;C:\
Program Files\
Microsoft Visual Studio 8
\
Common7\
Tools;C:\
Program Files\
Microsoft Visual Studio 8
\
SDK\
v2.0
\
bin;C:\
WINDOWS\
Microsoft.NET
\
Framework\
v2.0.50727
;C:\
Program Files\
Microsoft Visual Studio 8
\
VC\
VCPackages;C:\
Program Files\
Microsoft Platform SDK\
Bin;%PATH%
@set
INCLUDE=
C:\
Program Files\
Microsoft Visual Studio 8
\
VC\
INCLUDE;c:\
Program Files\
Microsoft Platform SDK\
Include;%INCLUDE%
@set
LIB
=
C:\
Program Files\
Microsoft Visual Studio 8
\
VC\
LIB
;C:\
Program Files\
Microsoft Visual Studio 8
\
SDK\
v2.0
\
lib
;c:\
Program Files\
Microsoft Platform SDK\
Lib
;%LIB
%
Renommer winres.h▲
Dans le répertoire C:\Program Files\Microsoft Platform SDK\Include, copiez WinResrc.h vers winres.h
Changements aux variables d'environnement▲
Démarrer->Panneau d'administration->Système->Avancé->Variables d'environnement
- Modifiez ou ajoutez « PATH » pour ajouter e:\zoe\BUILDS\icu\bin;e:\zoe\BUILDS\win32build\bin
- Modifiez ou ajoutez « INCLUDE » pour ajouter e:\zoe\BUILDS\icu\include;e:\zoe\BUILDS\win32build\include
- Modifiez ou ajoutez « LIB » pour ajouter e:\zoe\BUILDS\icu\lib;e:\zoe\BUILDS\win32build\lib
Ces modifications ne prendront pas effet dans les fenêtres qui sont déjà ouvertes, vous devez les fermer puis les ouvrir à nouveau.
V. Enfin - Compiler PHP▲
Juillet 2014 : PHP 6 est abandonné au profit de PHP 7
cf. PHP Wiki - RFC: Name of Next Release of PHPPHP RFC: Name of Next Release of PHP, par Andrea Faulds & Zeev Suraski
et plus précisément : [PHP-DEV] About PHP6, par Eli White (voir également mon commentaire dans la discussion)
Démarrer l'environnement▲
Démarrer -> Visual C++ 2005 Express Edition -> Visual Studio Tools -> Visual Studio 2005 Command Prompt
Compiler resolv.lib▲
cd e:\zoe\BUILDS\bindlib
vcexpress
File -> Open -> Project/Solution -> bindlib.dsp
- Vous aurez un avertissement à propos d'une conversion de bindlib.dsp au format actuel : à « Convert and open », sélectionnez « Yes »
Maintenant, allez dans Project->Properties->Configuration properties->C/C++/General
- Tout en haut, cliquez sur « Configuration manager », choisissez « Release » puis « Win32 » comme configuration active ;
- Dans les répertoires supplémentaires d'Includes (additional Include directories), ajoutez « ;c:\Program Files\Microsoft Platform SDK\Include » après le point puis cliquez sur Ok (cela lui dit où trouver winsock.h) ;
- Enfin : cliquez sur « Build » et sélectionnez « Build bindlib ».
Compiler PHP▲
cd e:\zoe\BUILDS\php6.0-200707031830
buildconf
cscript /nologo configure.js "--with-extra-libs=e:\zoe\BUILDS\icu" "--with-extra-includes=e:\zoe\BUILDS\icu\include" "--without-simplexml" "--enable-prefix=e:\php6" "--disable-zlib" "--disable-odbc" "--disable-cgi" "--enable-cli" "--without-iconv" "--without-libxml"
nmake
nmake install
Lancer un test pour s'assurer que la compilation a réussi▲
Créez un script avec le contenu suivant :
<?php
phpinfo() ?>
Dans la fenêtre de commandes, tapez :
e:\php6\php.exe test.php
Terminé !
VI. Liens▲
Juillet 2014 : PHP 6 est abandonné au profit de PHP 7
cf. PHP Wiki - RFC: Name of Next Release of PHPPHP RFC: Name of Next Release of PHP, par Andrea Faulds & Zeev Suraski
et plus précisément : [PHP-DEV] About PHP6, par Eli White (voir également mon commentaire dans la discussion)
Références
- L'article originalStep by step instructions for building PHP6 (and PHP5), par Zoe Slattery (IBM) ;
- Compiler PHP 5.2 et PHP-GTK2 sous Windows en utilisant VC++ ExpressCompiler PHP 5.2 et PHP-GTK2 sous Windows, par Elizabeth Smith ;
- Le manuel PHP.
Liens Developpez
- Conférence Internationale PHP 2006 : PHP 6 - PHP goes UnicodeCompte-rendu de conférence, par Guillaume Rossolini ;
- Installer simultanément plusieurs versions de PHP, par Guillaume Rossolini.