Précédent | Table des matières | Suivant


7. Compilation de PHP

7.1 Le coeur de PHP

Ouvrez le fichier <PHP>\win32\php4ts.dsw dans Visual Studio.

Sélectionnez "php4ts classes" comme projet actif.
Sélectionnez la configuration "Php4 - Win32 Release_TS_inline"
Menu "Build \ Rebuild all" et allez faire un tour !
  

Bien dormi ? ? Bon, alors on continue.

La compilation est donc terminée.

Comme pour apache, si vous avez une erreur, c'est rapé.

Sinon, quelque chose comme : "php.exe - 0 error(s), 4 warning(s)" devrait apparaître.

Allez dans <PHP>\Release_TS_inline. Vous devez y trouver 4 fichiers :

php.exe
php4ts.dll
php4ts.exp
php4ts.lib
  

Vous avez votre PHP. Bon d'accord, vous n'allez pas concurrencer la PHP-Team avec ça, mais c'est un début non ?

Ceci dit, notre PHP a un gros défaut : il n'est actuellement intégrable ni avec apache, ni avec apache2, sauf en version CGI, ce qui n'est pas notre but.

Il va donc falloir compiler les versions de PHP pour ces deux serveurs HTTP.

7.2 PHP module d'Apache 1.3.x

Dans Visual Studio que vous n'avez pas quitté, recherchez "php4apache classes", faites-en le projet actif avec la configuration "php4apache - Win32 Release_TS_inline".

Seulement, là, il va falloir expliquer à PHP où trouver certains fichiers des sources Apache.

Donc, si ce n'est déjà fait:

Menu "Tools \ options \ Directorie \ Includes Files" et ajouter <Apache>\src\include
Menu "Tools \ options \ Directorie \ Includes Files" et ajouter <Apache>\src\os\win32
Menu "Tools \ options \ Directorie \ Library Files" et ajouter <Apache>\src\lib
Menu "Tools \ options \ Directorie \ Library Files" et ajouter <Apache>\src\Release
Et enfin, F7 pour compiler juste php4apache.dll
  

Et miracle, après quelques minutes : "php4apache.dll - 0 error(s), 0 warning(s)" devrait apparaître. C'EST GAGNE !!!

Bon, d'accord, pas tout à fait. Rendez-vous dans le répertoire d'installation d'Apache.

De là, vous allez dans modules\ et vous y copiez les fichiers suivants:

php4apache.dll
php4ts.dll
php4ts.lib
  

S'en suit la configuration d'apache pour qu'il prenne en compte PHP (là, je ne vous aide plus ;-)) et vous démarrez le serveur grâce à la ligne de commande. Vous devriez voir apparaître:

"Apache/1.3.x (Win32) PHP/4.2.3 running..."
  

Vérifiez avec une petite page PHP type:

<?php
phpinfo();
?>
  

Et là, vous pouvez souffler, prendre deux aspirines et aller au lit, le visage béat de bonheur. Si, si, n'ayez pas honte, ça fait du bien.

Autre possibilité, vous pouvez également tester votre installation Web avec vos scripts préférés. Pour ma part, je le "teste" tous les jours avec SPIP et je n'ai encore rencontré aucun problème particulier.

7.3 PHP module d'Apache 2.x

Dans Visual Studio que vous n'avez pas quitté, recherchez "php4apache2 classes", faites-en le projet actif avec la configuration "php4apache2 - Win32 Release_TS_inline".

Seulement, là, il va falloir expliquer à PHP où trouver certains fichiers des sources Apache.

Donc, si ce n'est déjà fait:

Menu "Tools \ options \ Directorie \ Includes Files" et ajouter <Apache>\src\include
Menu "Tools \ options \ Directorie \ Includes Files" et ajouter <Apache>\src\os\win32
Menu "Tools \ options \ Directorie \ Library Files" et ajouter <Apache>\src\lib
Menu "Tools \ options \ Directorie \ Library Files" et ajouter <Apache>\src\Release
Et enfin, F7 pour compiler juste php4apache2.dll
  

Et miracle, après quelques minutes : "php4apache2.dll - 0 error(s), 0 warning(s)" devrait apparaître. C'EST GAGNE !!!

Bon, d'accord, pas tout à fait. Rendez-vous dans le répertoire d'installation d'Apache.

De là, vous allez dans modules\ et vous y copiez les fichiers suivants:

php4apache.dll
php4ts.dll
php4ts.lib
  

S'en suit la configuration d'apache pour qu'il prenne en compte PHP (là, je ne vous aide plus ;-)) et vous démarrez le serveur grâce à la ligne de commande.

Vous devriez voir apparaître:

"Apache/2.x (Win32) PHP/4.2.3 running..."
  

Vérifiez avec une petite page PHP type:

<?php
phpinfo();
?>
  

Et là, vous pouvez souffler, prendre deux aspirines et aller au lit, le visage béat de bonheur. Si, si, n'ayez pas honte, ça fait du bien.

Autre possibilité, vous pouvez également tester votre installation Web avec vos scripts préférés. Pour ma part, je l'ai testé avec SPIP et je n'ai rencontré de problème qu'avec la librairie zlib. C'est ennuyeux car elle est utilisée entre autre pour la compression du flux de sortie Apache (fonctions php ob_*).

7.4 Les modules simples de PHP

Ouvrez le fichier <PHP'>\win32\php_modules.dsw dans VisualStudio. A partir de là,tout va se passer dans ce fichier.

Menu "Tools \ Options".
Vérifiez que vous avez bien <BUILD>\include dans Include Files et <BUILD>\lib dans Library Files.
  

Si vous ne le faites pas, vous "perdrez" quelques modules. Ils sont marqués d'un "*" dans la liste

Menu "Build \ Batch Build"
  

Dans la liste de tous les modules avec, pour chacun d'entre eux, les différentes versions de compilation, décochez toutes les versions Debug pour ne conserver que les versions Release

Cliquez sur Build ...
  

Et pleurez car il y a pas mal d'erreurs ;-((

Néanmoins, vous obtenez du premier coup les modules suivants :

php_ctype.dll
php_db.dll
php_dbase.dll
php_dbx.dll
php_exif.dll
php_filepro.dll
php_hyperwave.dll *
php_mbstring.dll (malgré plein de Warning)
php_msql.dll *
php_mssql.dll *
php_shmop.dll
php_sockets.dll *
php_tokenizer.dll
php_w32api.dll
  

C'est pas mal, mais se n'est évidemment pas assez ;-))

Retroussons-nous donc les manches pour attaquer les autres modules.

Les chapitres suivants leurs sont consacrés.

Note: Si vous avez bien respecté les instructions du chapitre Pamarétrage de Visual Studio, il y a de bonnes chances pour que tous les modules soient déjà compilés. Surveillez les messages d'erreurs pour voir quels modules il vous reste à compiler.

7.5 Les autres modules de PHP

Tout se passe, sauf mention contraire, dans le fichier <PHP>\win32\php_modules.dsw qu'il vous faudra ouvrir dans Visual Studio. Si des modification sont nécessaires dans d'autres fichiers, n'oubliez pas de quitter Visual Studio avant de les effectuer afin qu'elles soient prises en compte à la ré-ouverture suivante.

php_bz2

Menu "Build \ Set Active Configuration" et choisissez bz2 - Win32 Release_TS
Menu "Tools \ Options", onglet Directories.
Ajoutez le chemin <BZip2> dans "Includes" et <BZip2>\release dans "Library files".
Ceci fait, F7 pour lancer la compilation.
  

Quelques instant plus tard, vous obtenez une jolie dll dans <PHP'>\Release_TS

php_cdpf

Menu "Build \ Set Active Configuration" et choisissez cpdf - Win32 Release_TS".
Menu "Tools \ Options", onglet Directories
Ajoutez <ClibPDF'>\source dans Include Files et <ClibPDF'>\Release dans Library Files.
F7 pour la compilation
  

Et vous pouvez souffler, c'est fait.

php_curl

Ouvrez le fichier <PHP>\ext\curl\curl.dsp dans bloc-notes

Recherchez et supprimez

"/nodefaultlib :"MSVCRT""
  

Sauvegardez et fermez

Sans ça, la compilation génèrera des erreurs (et je n'ai pas trouvé le moyen de faire avec).

Ouvrez <PHP>\win32\php_modules.dsw.
Menu "Build \ Set Active Configuration", sélectionnez "curl - Win32 Release_TS_SSL".
Menu "Tools \ Options", onglet Directories, ajoutez <Curl>\include ainsi que <OpenSSL>\inc32 dans Include Files et <Curl>\lib ainsi que <OpenSSL>\out32dll dans Library Files
F7 pour compiler
  

Et voilà.

Comme toujours pensez à copier les dll externes dans un répertoire du PATH:

libcurl.dll
ssleay32.dll
libeay32.dll
  

php_iconv

Alors là, bizarrement, le fichier projet iconv.dsp ne convient pas.

Il fait appel à une librairie appelée iconv-1.3.lib qui n'existe pas puisque nous avons utilisé la dernière version, à savoir la 1.8.

De plus, le résultat de la compilation donne un fichier iconv.lib et non iconv-xx.lib

Qu'à cela ne tienne, nous allons modifier le fichier projet.

Ouvrez le fichier <PHP>\ext\iconv\iconv.dsp dans Bloc-Notes et remplacez toutes les occurrences de "iconv-1.3.lib" par "iconv.lib"

Sauvegardez et fermez le fichier.

Dans VisualStudio, ouvrez le fichier <PHP>\win32\php_modules.dsw
Menu "Build \Set Active Configuration" et sélectionnez "iconv - Win32 Release_TS"
Menu "Tools / Options", onglets Directories, ajoutez <Iconv-1.8>\lib dans Library Files et <Iconv-1.8>\include dans Include Files
F7 pour la compilation
  

Voilà, ça marche ! !

php_mcrypt

La, point de compilation.

Souvenez-vous du chapitre Mise en place de LibMcrypt. Vous aviez 2 dll sous le coude gauche depuis ce temps là.

C'est le moment de les ressortir ;-):

php_mcrypt.dll
libmcrypt.dll
  

Copiez le premier dans votre répertoire d'extensions PHP et le second dans un répertoire qui figure dans le PATH.

Redémarrez Apache après avoir décommenté la ligne :

extension: php_mcrypt.dll
  

de php.ini...

... Et sautez de joie !!!

Les fonctionnalités de chiffrement sous PHP ne sont plus réservées à Linux.

php_openssl

Ouvrez le fichier <PHP>\ext\openssl\openssl.dsw

Menu "Build \ Set Active Configuration" et sélectionnez "openssl - Win32 Release_TS"
Menu "Tools \ Options" onlgets Directories, ajoutez <OPENSSL>\inc32 dans "Include Files" et <OPENSSL>\out32dll dans "Library Files"
F7 pour lancer la compilation...
  

Et normalement vous devriez obtenir la dll tant désirée dans <PHP>\Release_TS

Pour fonctionner correctement, php_openssl a besoin des dll suivantes :

libeay32.dll
ssleay32.dll
  

Ces deux dll ont été compilées en même temps qu'OpenSSL.

php_pgsql

Menu "Build \ Set Active Configuration" et sélectionnez "pgsql - Win32 Release_TS"
Menu "Tools \ Options" et ajoutez <Postgresql>\src\interfaces\libpq et <Postgresql>\src\include dans Include Files ainsi que <Postgresql>\src\interface\libpq\release dans Library Files
F7 pour compiler
  

php_snmp

Menu "Build \ Set Active Configuration", sélectionez "snmp - Win32 Release_TS"
Menu "Tools \ Options", ajoutez <Ucd-SNMP-4.2.6>\snmplib dans Include Files et <Ucd-SNMP-4.2.6>\win\lib dans Library Files.
F7 pour la compilation
  

Malgré quelques warnings, vous devriez obtenir le module.

php_xmlrpc

Menu "Build \Set Active Configuration", sélectionnez "xmlrpc - Win32 Release"
Menu "Tools \ Options", onglets Directories, ajoutez <Iconv>\include dans Include Files et <Iconv>\lib dans Library Files
F7 pour compiler
  

C'est gagné. N'oubliez pas iconv.dll ! !

php_xslt

Menu "Build \ Set Active Configuration" et sélectionnez "xslt - Win32 Release"
Menu "Tools \ Options", onglet Directories, ajoutez <Sablot>\lib dans Library Files
F7 pour compiler
  

N'oubliez pas de copier sablot.dll et js32.dll dans un répertoire système pour le bon chargement (et donc fonctionnement) du module.

php_yaz

Menu "Build \ Set Active Configuration" et choisissez "yaz - Win32 Release_TS"
Menu "Tools \ Options", ajoutez <Yaz>\include dans Include Files et <Yaz>\lib dans Library Files
F7 pour la compilation
  

php_zlib

Menu "Build \ Set Active Configuration" sélectionnez "zlib - Win32 Release_TS"
Menu "Tools \ Options", onglet Directories. Ajoutez <Zlib>\release dans Library Files
F7 pour lancer la compilation
  

Précédent | Table des matières | Suivant

Retour à l'accueil

Valid XHTML 1.0 Strict | Valid CSS

Sauf mention contraire, le contenu de ce site est publié sous contrat Creative Common by-nc-sa