 
          Introduction
La mise en service d’un serveur Web local Apache v 1.3.12 sous Windows pour les développements PHP est proposée dans cette note technique.
Parmi les points techniques et les principes fondamentaux abordés qui sont les plus importants :
- Démarrage et arrêt du serveur.
- Création d’Alias.
- Implémentation de PHP 4.
- Utilisation des fichiers .htaccess pour protéger et paramétrer les répertoires.
Installation du serveur Web Apache v 1.3.12
Pour des raisons de compatibilité avec les commandes MSDOS et pour une
            pratique plus aisée, le serveur Web Apache est installé dans le répertoire
            personnalisé ci-dessous afin d’éviter des noms de répertoire de plus de 8
            lettres ou comportant des espaces (le répertoire par défaut d’installation est
            C:\Program Files\Apache Group\Apache) :
C:\Serveurs\Web\ApacheDans la suite de cet article, %APACHE_DIR% désigne le répertoire
            d’installation du serveur Apache 1.3.
Démarrage du serveur Web
Dans une invite de commande DOS, pour démarrer le serveur Web Apache, lancer
            l’exécutable apache situé dans le répertoire %APACHE_DIR% avec l’argument -k
            start :
DOS> cd %APACHE_DIR%
DOS> apache -k startPour tester la mise en service du serveur Apache, lancer le navigateur et saisir l’adresse URL http://localhost ou http://127.0.0.1. Cette adresse amène par défaut à la page d’accueil d’Apache.
Redémarrage du serveur Web
Pour redémarrer le serveur Web Apache :
DOS> cd %APACHE_DIR%
DOS> apache -k restartArrêt du serveur Web
Pour éteindre le serveur Web :
DOS> cd %APACHE_DIR%
DOS> apache -k shutdownLes fichiers de configuration d’Apache
Les fichiers principaux de configuration pour Apache sont httpd.conf,
            srm.conf, access.conf. Ces derniers fichiers sont installés par défaut dans le
            répertoire %APACHE_DIR%\Conf. Après exécution du fichier httpd.conf par le
            serveur Apache, srm.conf et access.conf sont respectivement lus et interprétés
            par le serveur.
À l’installation d’Apache, les fichiers srm.conf et access.conf sont
            vierges. Il est par ailleurs recommandé par Apache de laisser ces derniers
            vides et de tout centraliser le paramétrage dans le fichier httpd.conf.
Répertoires virtuels ou "Alias"
Au sein d’Apache, l’ajout d’alias est illimité. Un alias permet d’associer un répertoire OS physique à un répertoire vituel Apache :
C:\repertoire\mesdeveloppements <=> http://127.0.0.1/monsite
Pour ajouter un alias, repérer le paragraphe #Alias dans le fichier
            httpd.conf.
### Section2 : 'Main' server configuration
# Aliases ...L’ajout d’alias s’effectue alors très simplement dans ce paragraphe grâce
            aux directives Alias comme indiquées en exemple ci-dessous :
%APACHE_DIR%\Conf\httpd.conf
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Ajout ici des alias ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Creation d’un alias le 02.01.2001 pour les tests php
Alias /test_php/ "c:/informatique/developpements/php/"
#
# Ajout pour implementation de phpMyAdmin v 2.5
Alias /php_admin/ "c:/serveurs/web/php/v4/myadmin/phpMyAdmin/"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~La page web c:/informatique/developpements/php/index.htmlcorrespondra à
            l’adresse URL http://127.0.0.1/php_admin/index.html/ avec la directive Alias
            définie ci-dessus.
Dans les fichiers de configurations d’Apache, seuls les "/" sont autorisés.
Implémentation de l’interpréteur de script PHP
L’intégration de l’interpréteur de script PHP au sein du serveur Apache est
            réalisée ici pour la machine PHP v 4.0.2. L’interpréteur de script PHP est
            l’exécutable php.exe avec ses librairies associées.
Il faut spécifier au serveur Apache dans un premier temps les extensions des
            fichiers Web associés à l’interpréteur de script PHP. Pour la machine PHP ces
            extensions sont *.phml, *.php, *.php3 et *.php4.
Dans le fichier httpd.conf, ces associations sont consignées dans le
            paragraphe
### Section2 : 'Main' server configuration
# AddType ...grâce aux directives AddType:
%APACHE_DIR%\Conf\httpd.conf
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .phtml
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~La nomenclature x-httpd-php aura toute son importance pour la suite.
La seconde étape consiste à donner un alias pour le répertoire contenant
            l’interpréteur de script PHP. La directive ScriptAlias réalise cette opération,
            directive qui précise à Apache qu’il s’agit d’un répertoire hébergeant des
            interpréteurs de scripts (CGI, PHP, Perl, Python…).
ScriptAlias /php/ c:/serveurs/web/php/v4/RTime/Dans l’exemple ci-dessus, la machine PHP 4.0 est installée dans le
            répertoire c:/serveurs/web/php/v4/RTime
Dernière étape : indiquer que toute application de type
            "application/x-httpd-php" (*.php, *.php3…) est systématiquement traitée par
            /php/php.exe grâce à la directive Action.
Action application/x-httpd-php /php/php.exeL’ajout de modules Apache
Des modules complémentaires pour Apache sont fournis dans le répertoire
            %APACHE_DIR%\Modules. Il s’agit de librairies de liaisons dynamiques (i.e.
            fichiers DLL). Pour activer ces modules, il suffit de décommenter les lignes
            ci-dessous dans le paragraphe Dynamic Shared Object du fichier de configuration
            httpd.conf.
# Dynamic Shared Object (DSO) Support
#
#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
#LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll
#LoadModule digest_module modules/ApacheModuleDigest.dll
#LoadModule expires_module modules/ApacheModuleExpires.dll
#LoadModule headers_module modules/ApacheModuleHeaders.dll
#LoadModule proxy_module modules/ApacheModuleProxy.dll
#LoadModule rewrite_module modules/ApacheModuleRewrite.dll
#LoadModule speling_module modules/ApacheModuleSpeling.dll
#LoadModule status_module modules/ApacheModuleStatus.dll
#LoadModule usertrack_module modules/ApacheModuleUserTrack.dllCe dernier paragraphe permet également en outre de charger des modules personnels.
Toutefois, la documentation Apache précise bien que l’ordonnancement de chargement de ces modules doit être scrupuleusement respecté pour des raisons de performances du serveur Web (consulter la documentation en ligne à ce sujet).
Les fichiers .htaccess
Les fichiers .htaccess sont des fichiers de configuration d’Apache
            permettant de définir des règles dans un répertoire et dans tous les sous
            répertoires qui ne possèdent de fichiers .htaccess.
Ces derniers sont utilisés pour protéger un répertoire par un mot de passe ou pour changer le nom ou l’extension de la page d’index, ou encore pour interdire l’accès au répertoire.
Intérêt des fichiers .htaccess
Les fichiers .htaccess peuvent être utilisés dans n’importe quel répertoire
            virtuel ou sous répertoire.
Les principales raisons d’utilisation des fichiers .htaccess sont :
- Gérer l’accès à certains fichiers
- Ajouter un mime-type
- Protéger l’accès à un répertoire par un mot de passe
- Définir des pages d’erreurs personnalisées
Principe des fichiers .htaccess
Le fichier .htaccess est placé dans le répertoire dans lequel ce dernier
            doit agir. Il agit ainsi sur les permissions du répertoire qui le contient et
            de tous ses sous répertoires. Un fichier .htaccess dans un sous répertoire d’un
            répertoire déjà contrôlé par un fichier .htaccess est possible.
Le fichier .htaccess du répertoire parent reste en activité tant que les
            fonctionnalités n’ont pas été réécrites.
Empêcher l’accès à des ressources
Pour créér un fichier .htaccess sous Windows et Notepad, enregistrer le
            fichier en protégeant .htaccess avec des double quotes lors de l’enregistrement
            (".htaccess"). 
Empêcher l’accès à un répertoire à un domaine
La syntaxe pour bloquer l’accès d’un répertoire à un domaine est la suivante :
Allow (all, [liste de domaine])
Deny (all, [liste de domaine])
Order (Allow,Deny ou Deny,Allow).htaccess
Order Deny, Allow
Deny from .sqlpac.comToutes les personnes (requêtes) provenant du domaine .sqlpac.com ne pourront avoir accès aux ressources comprises dans le répertoire et ses sous-répertoires. La commande Order sert à préciser explicitement que la commande Deny va bien annuler l’effet de Allow et non l’inverse.
Empêcher l’accès à un type de fichiers à un domaine
<Files *.jpg>
  Order Deny, Allow
  Deny from .sqlpac.com
</Files>Toutes les personnes ou requêtes provenant du domaine .sqlpac.com ne
            pourront avoir accès aux images dont l’extension est .jpg dans le répertoire et
            ses sous répertoires.
Autoriser l’accès à un groupe de fichiers à un domaine et un pays
<Files syb*>
  Order Allow, Deny
  Deny from all
  Allow from .sqlpac.com
  Allow from .fr
</Files>Toutes les personnes ou requêtes provenant du domaine .sqlpac.com ou des domaines ayant la terminaison .fr pourront avoir accès aux fichiers commençant par sybdans le répertoire et ses sous répertoires (par exemple le fichier sybase-ase-12.5.html).
Protéger un répertoire par un mot de passe
Il s’agit d’une des applications les plus utiles du fichier .htaccess car
            elle permet de définir de façon sûre (à l’aide d’un login et d’un mot de passe)
            les droits d’accès à des fichiers par certains utilisateurs. La syntaxe est la
            suivante :
AuthUserFile (nom du fichier)
AuthType (Basic)
AuthName ([texte])Cette commande permet de définir l’emplacement du fichier contenant les
            logins et les mots de passe des utilisateurs autorisés à accéder à une
            ressource donnée. Voici un exemple de fichier .htaccess
AuthName "Accès Espace privé"
AuthType Basic
AuthUserFile /home/www/.FichierDeMotDePasse
<Limit GET POST>
   Require valid-user
</Limit>- AuthNameparamètre le libellé de la boîte de dialogues demandant le nom d’utilisateur et le mot de passe.
- AuthType Basicprécise qu’il faut utiliser- AuthUserFilepour l’authentification.
- Require valid-userprécise que l’on autorise uniquement les personnes identifiées.
- AuthUserFiledonne le chemin complet d’accès au fichier des comptes et mot de passe. Le chemin ne doit pas être un alias Apache mais le chemin OS physique exact.
Voici un exemple de fichier de mot de passe (ici .FichierDeMotDePasse) :
sqlpac:$apr1$D8......$m8PWrn90oDjiIPqyaa9pl.
cgcam:$apr1$19......$PX1A0WOp8UpZGkekwiRpe0.FichierDeMotDePasse est un simple fichier texte contenant
            <username>:<mot de passe>. Le mot de passe peut être crypté ou non.
            Les versions cryptées de mot de passe peuvent être générées grâce au binaire
            htpasswd dans le répertoire %APACHE_DIR%\bin :
DOS> %APACHE_DIR%\bin\htpasswdhtpasswd -c D:\.FichierDeMotDePasse sqlpacAutomatically using MD5 format on Windows. New password: ******* Re-type new password: ******* Adding password for user sqlpac
-c n’est utilisé que pour créer le fichier des mots de passe lorsque ce
            dernier n’existe pas.
Personnalisation des messages d’erreurs
Il s’agit d’une fonctionnalité pratique car elle permet de définir une page par défaut pour un type d’erreur donné (voir l’ensemble des codes d’erreur et leurs significations…).
Cela permet d’une part de guider l’utilisateur au lieu d’afficher la banale page du navigateur, ainsi que d’égayer la navigation même en cas d’erreur.
ErrorDocument (code-à-3chiffres [nom du fichier ou texte ou URL])Les deux lignes suivantes permettent de définir des pages d’erreur personnalisées au cas où l’accès à un document serait interdit ou bien que le document n’existe pas :
ErrorDocument 403 /erreurs/403.php3
ErrorDocument 404 /erreurs/404.php3Ceci vous permet de donner un message d’erreur personnalisé remplaçant les messages renvoyés par le navigateur.
Voici quelques unes des erreurs les plus courantes à personnaliser :
- 401 Unauthorized: la personne n’a pas passé avec succès l’identification.
- 403 Forbidden: le serveur n’a pas le droit de répondre à votre requête.
- 404 Not Found: le serveur n’a pas trouvé le document souhaité.
Changer le fichier Index par défaut
Le fichier index est le fichier qui est affiché lorsqu’aucun nom de fichier n’est défini dans l’URL (par exemple http://www.serveur.com/repertoire). Cela permet d’éviter que le navigateur liste l’ensemble des fichiers contenus dans le répertoire (pour des raisons de confidentialité).
La syntaxe pour effectuer ce type d’opération est la suivante :
DirectoryIndex (fichiers)Voici un exemple de mise en application :
DirectoryIndex index.php index.html index.phtml /erreurs/403.phpLorsque vous essayez d’accéder au répertoire sans préciser la page à
            afficher, Apache a recours à la directive DirectoryIndex. En général, par
            défaut cette directive pointe vers index.html puis index.htm.
Dans l’exemple ci-dessus, Apache va commencer par chercher index.php, puis
            index.html, et ensuite index.phtml. Si aucun de ces trois fichiers existent, la
            page 403.php (se trouvant dans la racine) sera affichée pour éviter de lister
            le répertoire.