Microsoft IIS 5.1 et IIS 6.0
Cette section contient les instructions pour une installation manuelle sous IIS
(Internet Information Services) 5.1 et IIS 6.0 de PHP sous Microsoft Windows XP
et Windows Server 2003. Pour des instructions sur la configuration sous IIS 7.0
et supérieur sous Windows Vista, Windows Server 2008, Windows 7 et Windows Server 2008 R2,
reportez-vous à la section
Microsoft IIS 7.0 et suivant.
Configuration sous IIS pour traiter les requêtes PHP
Téléchargez et installez PHP suivant les instructions décrites dans les
étapes d'installation manuelle.
Note:
La version PHP non thread-safe est recommandé lors de l'utilisation d'IIS.
Ces versions sont disponibles sur la page
» PHP pour Windows : Binaires et sources.
Configurez les options CGI- et FastCGI du fichier php.ini comme ceci :
Exemple #1 Options de configuration de CGI et FastCGI du fichier php.ini
fastcgi.impersonate = 1
fastcgi.logging = 0
cgi.fix_pathinfo=1
cgi.force_redirect = 0
Téléchargez et installez l'extension » Microsoft FastCGI pour IIS 5.1 et 6.0.
L'extension est disponible pour les plate-formes 32-bit et 64-bit - sélectionnez le bon paquet pour votre plate-forme..
Configurez l'extension FastCGI pour gérer les requêtes spécifiques PHP en exécutant la commande ci-dessous.
Remplacez la valeur du paramètre "-path" avec le chemin absolu vers le fichier
php-cgi.exe.
Exemple #2 Configuration de l'extension FastCGI pour gérer les requêtes PHP
cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" ^
-extension:php -path:"C:\PHP\php-cgi.exe"
Cette commande va créer un mapping des scripts IIS pour les extensions de fichiers *.php, ce qui
aura pour effet la gestion de toutes les URLs se terminant par .php par l'extension FastCGI.
De plus, la commande configurera l'extension FastCGI lui demandant d'utiliser l'exécutable
php-cgi.exe pour traiter les requêtes PHP.
Note:
A ce point, les étapes d'installation et de configuration nécessaires sont terminées.
Les instructions qui suivent dans cette section sont optionnelles mais vivement
recommandées afin d'atteindre des fonctionnalités et des performances optimales
de PHP sous IIS.
Usurpation d'identité et accès au système de fichiers
Il est recommandé d'activer l'usurpation d'identité pour FastCGI en PHP
lors de l'utilisation avec IIS. Ce mode est contrôlé par la directive
fastcgi.impersonate du fichier php.ini.
Lorsque ce mode est activé, PHP effectuera toutes les opérations du système
de fichiers avec le compte utilisateur qui a été choisi pour l'authentification
IIS. Ceci assure que, même si le même processus PHP est partagé avec différents
sites web IIS, les scripts PHP de ces sites web ne pourront pas accéder aux autres
fichiers tant que différents comptes utilisateurs sont utilisées pour
l'authentification IIS de chaque site web.
Par exemple, IIS 5.1 et IIS 6.0, dans leurs configurations par défaut, ont d'activé
l'authentification anonyme avec le compte interne IUSR_<MACHINE_NAME> utilisé
comme identité par défaut. Ceci signifie que, afin de permettre à IIS d'exécuter des
scripts PHP, il est nécessaire de donner les droits de lecture au compte
IUSR_<MACHINE_NAME> pour ces scripts. Si les applications PHP doivent effectuer
des opérations en écriture sur certains fichiers ou écrire des fichiers dans des dossiers,
le compte IUSR_<MACHINE_NAME> doit avoir les permissions en écriture sur ces différents
éléments.
Pour déterminer quel est le compte utilisateur utilisé par l'authentification anonyme IIS,
suivez ces étapes :
-
Dans le menu de démarrage de Windows, choisissez :
"Run:", tapez "inetmgr" et cliquez sur "Ok";
-
Dépliez la liste des sites Web sous le nœud "Web Sites" de l'arbre, faîtes
un clic droit sur un site web utilisé et sélectionnez "Properties";
-
Cliquez sur l'onglet "Directory Security";
-
Prenez note du champ "User name:" dans le dialogue "Authentication Methods"
Pour modifier la configuration des permissions sur des fichiers ou des dossiers, utilisez
l'explorateur Windows ou la commande icacls.
Exemple #3 Configuration des permissions d'accès
icacls C:\inetpub\wwwroot\upload /grant IUSR:(OI)(CI)(M)
Définition du fichier index.php comme document par défaut sous IIS
Les documents par défaut IIS sont utilisés pour les requêtes HTTP qui ne spécifie pas de nom de document.
Avec les applications PHP, index.php agit généralement comme document par défaut.
Pour ajouter index.php à la liste des documents par défaut IIS, suivez ces étapes :
-
Dans le menu de démarrage Windows, choisissez "Run:", tapez "inetmgr" et cliquez sur "Ok";
-
faîtes un clic droit sur le nœud "Web Sites" de l'arbre et sélectionnez "Properties";
-
Cliquez sur l'onglet "Documents";
-
Cliquez sur le bouton "Add..." et entrez "index.php" comme "Default content page:".
Configuration du recyclage FastCGI et PHP
Configurez l'extension IIS FastCGI pour le recyclage des processus PHP en utilisant la commande ci-dessous.
La directive instanceMaxRequests de FastCGI contrôle le nombre de requêtes a traité par
un seul processus php-cgi.exe avant l'extinction de l'extension FastCGI. La variable
d'environnement PHP PHP_FCGI_MAX_REQUESTS contrôle le nombre de requêtes qu'un seul processus
php-cgi.exe peut gérer avant de ce recycler lui-même. Assurez-vous que la valeur spécifiée
pour la directive InstanceMaxRequests FastCGI est inférieure ou égale à la valeur spécifiée
pour la directive PHP_FCGI_MAX_REQUESTS.
Exemple #4 Configuration du recyclage FastCGI et PHP
cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-InstanceMaxRequests:10000
cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHP_FCGI_MAX_REQUESTS:10000
Configuration du délai d'expiration FastCGI
Augmentez le délai d'expiration pour l'extension FastCGI s'il y a des applications
dont les scripts PHP mettent beaucoup de temps à s'exécuter. Les 2 configurations
qui contrôlent les délais d'expiration sont ActivityTimeout
et RequestTimeout. Referez-vous à la
» configuration de l'extension
FastCGI pour IIS 6.0 pour plus d'informations sur ces configurations.
Exemple #5 Configuration du délai d'expiration FastCGI
cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-ActivityTimeout:90
cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-RequestTimeout:90
Modification du dossier contenant le fichier php.ini
PHP recherche le fichier php.ini dans
différents endroits et il est possible
de modifier ces endroits de recherche du fichier php.ini en
utilisant la variable d'environnement PHPRC.
Pour demander à PHP de charger le fichier de configuration depuis un dossier personnalisé,
exécutez la commande ci-dessous. Le chemin absolu du dossier contenant le fichier
php.ini doit être spécifié sous la variable d'environnement
PHPRC.
Exemple #6 Modification du dossier contenant le fichier php.ini
cscript %windir%\system32\inetsrv\fcgiconfig.js -set -section:"PHP" ^
-EnvironmentVars:PHPRC:"C:\Some\Directory\"