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.
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.
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)
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:".
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
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
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\"