Instructions pas à pas pour compiler PHP 5 et 6 sous Windows

| Zoe Slattery | Guillaume Rossolini (traducteur) |

Ce tutoriel reflète les résultats de Zoe Slattery (IBM) lors de ses essais de compilation de PHP sous Windows. Elle s'est inspirée des diverses tentatives d'Elisabeth Smith, et aboutit à une procédure simple et fonctionnelle.

L'article original est disponible ici.

Commentez ♪

Un article connexe et plus récent se trouve ici :

compiler Apache httpd 2.2.9 avec Microsoft Visual Studio C++ 2008 Express Edition, par Fabien Faille

Fin juillet 2014 : PHP 6 est abandonné au profit de PHP 7

cf. PHP Wiki - 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)

- Titre : Instructions pas à pas pour compiler PHP 5 et 6 sous Windows

- Auteurs : Zoe Slattery, Guillaume Rossolini (traducteur)

- Parution : 5 juillet 2007

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2007 Zoe Slattery & Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Téléchargement des outils

- III. Récupérer PHP et ses prérequis

- IV. Configurer l'environnement de compilation

- Ajouter les chemins d'accès au script vsvars32.bat

- Renommer winres.h

- Changements aux variables d'environnement

- V. Enfin - Compiler PHP

- Démarrer l'environnement

- Compiler resolv.lib

- Compiler PHP

- Lancer un test pour s'assurer que la compilation a réussi

- VI. Liens

I - Introduction

Juillet 2014 : PHP 6 est abandonné au profit de PHP 7

cf. PHP Wiki - 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 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 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.

Pour ICU, j'ai pris ceci :

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

Les lignes concernées dans mon fichier sont :

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

Dans la fenêtre de Visual Studio :

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

Dans la fenêtre de Visual Studio :

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 :

test.php

<?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 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 original, par Zoe Slattery (IBM) ;

- Compiler PHP 5.2 et PHP-GTK2 sous Windows en utilisant VC++ Express, par Elizabeth Smith ;

- Le manuel PHP.

Liens Developpez

- Conférence Internationale PHP 2006 : PHP 6 - PHP goes Unicode, par Guillaume Rossolini ;

- Installer simultanément plusieurs versions de PHP, par Guillaume Rossolini.