Manuel PHP
Précédent | Chapitre 3. Installation | Suivant

# Installation avec le serveur Apache

Cette section contient des notes spécifiques pour l'installation de `PHP` avec Apache, aussi bien pour la version Unix que Windows. Des notes spécifiques pour Apache 2 sont aussi disponibles sur une page séparée.

## Détails pour l'installation de `PHP` sous Apache sous Unix.

Vous pouvez sélectionner des options à ajouter au fichier configure à la ligne 10 depuis la liste complète des options de configuration. Les numéros de versions ont été omis ici afin de s'assurer que les instructions ne sont pas incorrectes. Vous devrez donc remplacer les 'xxx' par les versions correctes de vos fichiers.

Exemple 3-9. Instructions d'installation de `PHP` (en module Apache)

    1.  gunzip apache_xxx.tar.gz
    2.  tar -xvf apache_xxx.tar
    3.  gunzip php-xxx.tar.gz
    4.  tar -xvf php-xxx.tar
    5.  cd apache_xxx
    6.  ./configure --prefix=/www --enable-module=so
    7.  make
    8.  make install
    9.  cd ../php-xxx

    10. Maintenant, configurez votre PHP. C'est l'endroit où vous configurez PHP
        avec diverses options, comme les extensions qui seront activées. Lancez
        ./configure --help pour une liste des options disponibles. Dans notre exemple,
        nous ferons un ./configure assez simple avec uniquement le support Apache et MySQL.
        Votre chemin vers apxs peut être différent de notre exemple.

          ./configure --with-mysql --with-apxs=/www/bin/apxs

    11. make
    12. make install

        Si vous décidez de changer vos options de configuration après l'installation,
        vous aurez juste besoin de répéter les trois dernières étapes. Vous aurez aussi besoin
        de redémarrer apache pour que le nouveau module soit chargé. Une recompilation de
        Apache n'est pas nécessaire.

        Notez que, à moins de l'avoir explicitement désactivé, 'make install' installera aussi PEAR,
        et des outils PHP tels que phpize, installera le CLI PHP, etc...

    13. Configurez votre fichier php.ini :

          cp php.ini-dist /usr/local/lib/php.ini

        Vous pouvez éditer votre fichier .ini pour régler certaines options PHP. Si vous souhaitez
        votre php.ini à un autre endroit, utilisez --with-config-file-path=/votre/chemin lors de
        l'étape 10.

        Si vous utiliez plutôt php.ini-recommended, assurez vous de lire l'ensemble des changements
        qui y sont contenus, car ils modifient le fonctionnement de PHP.

    14. Editez votre httpd.conf afin de charger le module PHP. Le chemin dans la partie droite de la
        directive LoadModule doit pointer vers l'endroit où se trouve le module PHP sur votre système.
        Le make install lancé plus haut l'y aura certainement déjà déposé pour vous, mais assurez vous
        de vérifier.

        Pour PHP 4 :

          LoadModule php4_module libexec/libphp4.so

        Pour PHP 5 :

          LoadModule php5_module libexec/libphp5.so

    15. Et dans la section AddModule de httpd.conf, quelque part en dessous de
        ClearModuleList, ajoutez ceci :

        Pour PHP 4 :

          AddModule mod_php4.c

        Pour PHP 5 :

          AddModule mod_php5.c

    16. Dites à Apache de faire parser certaines extensions par PHP. Par exemple,
        faites parser l'extension .php par PHP. Vous pouvez ajouter n'importe quelle(s)
        extension(s) à parser juste en les ajoutant à la suite, séparées par un espace.
        Nous ajouterons .phtml dans notre exemple.

          AddType application/x-httpd-php .php .phtml

        Il est assez fréquent de configurer l'extension .phps comme code source PHP colorisé,
        ce qui peut être fait ainsi :

          AddType application/x-httpd-php-source .phps

    17. Utilisez votre méthode habituelle pour démarrer le serveur Apache.
        (vous devez l'éteindre et le redémarrer, pas seulement lui envoyer
        un signal HUP ou USR1.)

Suivant votre installation d'Apache et votre variante d'Unix, il existe de nombreuses façons d'arrêter et redémarrer Apache. Voici une liste des commandes typiques, pour différentes installations. Remplacez `/path/to/` par le chemin d'accès à vos applications sur votre système.

Exemple 3-10. Exemples de commandes pour le redémarrage d'apache

    1. Nombreuses variantes Linux SysV :
    /etc/rc.d/init.d/httpd restart

    2. Avec les scripts apachectl :
    /path/to/apachectl stop
    /path/to/apachectl start

    3. httpdctl et httpsdctl (utilisant OpenSSL), similaires à apachectl:
    /path/to/httpsdctl stop
    /path/to/httpsdctl start

    4. En utilisant mod_ssl, ou un autre serveur SSL, vous pouvez vouloir l'arrêter
    et le démarrer  manuellement :
    /path/to/apachectl stop
    /path/to/apachectl startssl

L'emplacement des exécutables apachectl et http(s)dctl peut varier. Si votre système est pourvu des commandes `locate`, `whereis` ou `which`, elles peuvent vous aider à retrouver vos programmes.

Différents exemples de compilation `PHP` pour Apache suivent :

Exemple 3-11. Exemples de compilation de `PHP` pour Apache

    ./configure --with-apxs --with-pgsql

Cette commande va créer une bibliothèque partagée `libphp4.so` qui sera chargée par Apache avec une ligne LoadModule dans le fichier `httpd.conf`. Le support PostgreSQL est aussi inclut dans `libphp4.so`.

Exemple 3-12. Compilation de `PHP` avec le support PostGreSQL

    ./configure --with-apxs --with-pgsql=shared

Cette commande va créer une bibliothèque partagée `libphp4.so` pour Apache, mais va aussi créer la bibliothèque partagée `pgsql.so` qui sera chargée dans `PHP` avec une directive du fichier `php.ini` file ou en la chargeant explicitement dans le script avec la fonction dl().

Exemple 3-13. Compilation en bibliothèques statiques

    ./configure --with-apache=/path/to/apache_source --with-pgsql

Cette commande va créer une autre bibliothèque partagée `libmodphp4.a`, un fichier `mod_php4.c` et quelques fichiers associés dans le dossier `src/modules/php4` du dossier source Apache. Puis, vous devez compiler Apache avec `--activate-module=src/modules/php4/libphp4.a` et le système de compilation d'Apache va créer un fichier `libphp4.a` et le lier statiquement avec `httpd`. Le support PostgreSQL est alors inclus directement dans l'exécutable `httpd`, ce qui fait que le résultat final est un fichier unique `httpd`, qui inclut Apache et `PHP`.

Exemple 3-14. Compilation en bibliothèques partagées

    ./configure --with-apache=/path/to/apache_source --with-pgsql=shared

Comme précédemment, mais au lieu d'inclure le support PostgreSQL directement dans l'exécutable `httpd` final, vous allez obtenir une bibliothèque partagée `pgsql.so` que vous pouvez charger dans `PHP` soit grâce au fichier de configuration `php.ini` ou dynamiquement avec dl().

Lorsque vous faites votre choix entre les différents modes de compilation de `PHP`, vous devez prendre en compte leurs avantages et inconvénients respectifs. Les objets partagés permettent de compiler `PHP` et Apache de manière séparée, et vous n'aurez pas à compiler l'ensemble pour faire évoluer `PHP`. La compilation statique permet de charger et d'exécuter plus rapidement `PHP`. Pour plus d'informations, voyez la page web sur le support des DSO.

> Note : Le `httpd.conf` par défaut de Apache est fourni avec une section qui ressemble à ceci :

> Exemple 3-15. httpd.conf fournit par Apache

>     User nobody
>     Group "#-1"

> A moins que vous ne changiez cette valeur par "Group nogroup" ou quelque chose comme ça ("Group daemon" est aussi classique), `PHP` ne sera pas capable d'ouvrir des fichiers.

> Note : Assurez-vous que vous spécifiez la version installée de apxs avec l'option --with-apxs=/path/to/apxs. Vous ne devez PAS utiliser la version d'apxs qui est dans les sources d'Apache, mais celle qui est réellement installée sur votre système.

## Installer `PHP` sous Windows avec Apache 1.3.x

Il y a deux méthodes pour faire fonctionner `PHP` avec Apache 1.3.x sous Windows. La première est d'utiliser l'exécutable CGI (php.exe), l'autre est d'utiliser les modules Apache DLL. Dans les deux cas, vous devez arrêter le serveur Apache, éditer votre fichier `httpd.conf` pour dire à Apache de prendre `PHP` en compte.

Mainetant que le module SAPI a été rendu plus stable sous Windows, nous recommandons son usage plutôt que celui de l'exécutable CGI, car il est plus transparent et sécurisé.

Bien qu'il puisse y avoir quelques différences de configuration de `PHP` sous Apache, le processus reste simple et à la portée du néophyte. Reportez-vous aux documentations Apache pour plus de détails sur ces directives.

Si vous avez dézippé le package `PHP` dans `c:\php\` comme indiqué dans le chapitre Installation manuelle sous Windows", vous devez insérer les lignes suivantes dans vos fichiers de configuration Apache pour configurer l'exécutable CGI :

- `ScriptAlias /php/ "c:/php/"`

- `AddType application/x-httpd-php .php .phtml`

- `Action application/x-httpd-php "/php/php.exe"`

Notez que la deuxième des lignes ci-dessus peut être trouvée dans les versions courantes de `httpd.conf`, mais commentée. N'oubliez pas de remplacer `c:/php/` par le chemin courant de `PHP`.

Avertissement
En utilisant la configuration en CGI, votre serveur sera ouvert à plusieurs attaques potentielles. Lisez donc la section sécurité des CGI pour savoir comment vous en défendre.

Si vous voulez utiliser `PHP` comme module Apache, vous devez déplacer le fichier `php4ts.dll` dans le dossier `windows/system` (pour Windows 9x/Me), `winnt/system32` (pour Windows NT/2000) ou `windows/system32` (pour Windows XP) en écrasant les anciennes versions. Puis, vous devez ajouter les deux lignes suivantes dans le fichier de configuration Apache `httpd.conf` :

- Editez `httpd.conf` avec votre programme favori, repérez la directive `LoadModule` et ajoutez la ligne suivante à la fin de la liste pour `PHP` 4 : `LoadModule php4_module "c:/php/sapi/php4apache.dll"` ou celle-ci pour `PHP` 5 : `LoadModule php5_module "c:/php/sapi/php5apache.dll"`

- Il se peut que, après avoir utilisé l'installeur Windows de Apache, vous deviez définir la directive `AddModule` pour `mod_php4.c`. C'est particulièrement important si la directive `ClearModuleList` est définie (vous la trouverez normalement quelques lignes plus bas). Vous verrez une liste d'entrés `AddModule`, ajoutez la ligne suivante à la fin de la liste : `AddModule mod_php4.c` Pour `PHP` 5, utilisez plutôt `AddModule mod_php5.c`

- Cherchez une phrase identique à `# AddType allows you to tweak mime.types`. Vous verrez quelques entrées `AddType`, ajoutez alors la ligne suivante à la fin de la liste : `AddType application/x-httpd-php .php`. Vous pouvez choisir les extensiosn que vous voulez parsées par `PHP` ici-même. .php est tout simplement celle que nous suggérons. Vous pouvez aussi ajouter .html et .php3 pour une compatibilité ascendante.

Après avoir modifié le fichier de configuration, pensez à redémarrer le serveur web, par exemple avec NET STOP APACHE suivi de NET START APACHE, si vous utilisez Apache comme service Windows, ou bien utilisez vos alias classiques.

Il y a deux méthodes pour utiliser la fonctionnalité de coloration syntaxique, elles dépendent de votre installation. Si vous avez configuré Apache pour utiliser `PHP` comme module SAPI, alors il suffit d'ajouter la ligne suivante dans votre `httpd.conf` (au même endroit que celui où vous avez inséré `AddType application/x-httpd-php .php`, voir plus haut) pour bénéficier de cette fonctionnalité : `AddType application/x-httpd-php-source .phps`

Si vous choisissez de configurer Apache pour utiliser `PHP` comme exécutable CGI, vous aurez besoin de la fonction show_source(). Pour cela, créez simplement un script `PHP` et ajoutez-y le code suivant : `<?php show_source ("original_php_script.php"); ?>`. Substitutez `original_php_script.php` par le nom du fichier que vous souhaitez afficher.

> Note : Avec le couple Windows-Apache tous les antislashes des noms de chemins tels que "`c:\directory\file.ext`", doivent être convertis en slash c'est à dire "c:/directory/file.ext".

Précédent | Sommaire | Suivant
CGI/ Installation pour exécution en ligne de commande | Niveau supérieur | Installation avec les serveurs Apache 2.0