Forum und email

Installation avec les serveurs IIS/PWS

Cette section contient des notes sur l'installation de PHP avec IIS ( Microsoft Internet Information Server).

Warning

En utilisant le mode CGI, votre serveur est ouvert à de possibles attaques sérieuses. Lisez attentivement notre section sur la sécurité en mode CGI pour apprendre comment vous défendre contre ces attaques.

Considérations générales pour toutes les installations de PHP avec IIS ou PWS

  • Tout d'abord, lisez les instructions d'installation du manuel. Ne négligez pas cette étape, elle fournit des informations essentielles sur l'installation de PHP sur Windows.
  • Les utilisateurs de CGI doivent définir la directive PHP cgi.force_redirect à 0 dans le php.ini. Lisez la faq sur cgi.force_redirect qui vous apprendra des détails importants. De même, les utilisateurs de CGI peuvent vouloir définir la directive cgi.redirect_status_env. Lorsque vous utilisez les directives, assurez-vous qu'elles ne soient pas commentées dans le php.ini.
  • Le CGI de PHP 4 est nommé php.exe tandis qu'en PHP 5, il est nommé php-cgi.exe. En PHP 5, php.exe est le CLI et non le CGI.
  • Modifiez la variable d'environnement PATH de Windows afin d'inclure le dossier de PHP. De cette façon, les fichiers DLLs de PHP, et les exécutables de PHP peuvent tous résider dans le dossier de PHP sans être dans le dossier système de Windows. Pour plus de détails, lisez la FAQ sur la façon de définir le PATH.
  • L'utilisateur IIS (habituellement IUSR_MACHINENAME) a besoin de permission pour lire les différents fichiers et dossiers, comme le php.ini, docroot ainsi que le dossier temporaire hébergeant les sessions.
  • Assurez-vous que les directives PHP extension_dir et doc_root soient correctement définies dans le php.ini. Ces directives dépendent du système sur lequel PHP est installé. En PHP 4, extension_dir vaut extensions tandis qu'en PHP 5, il vaut ext. Donc, un exemple de valeur pour extensions_dir en PHP 5 est "c:\php\ext" et un exemple de valeur pour doc_root pour IIS est "c:\Inetpub\wwwroot".
  • Les fichiers d'extensions DLL de PHP, comme php_mysql.dll et php_curl.dll, peuvent être trouvés dans le paquet compressé de PHP (et non dans l'installeur de PHP). En PHP 5, beaucoup d'extensions font parties de PECL et peuvent être téléchargées dans le paquet "Collection de modules PECL". Les fichiers comme php_zip.dll et php_ssh2.dll. » Téléchargez les fichiers PHP ici.
  • Lors de la définition de l'exécutable, la case "Vérifier que ce fichier existe" doit également être cochée. Pour un faible coût au niveau performance, IIS (ou PWS) vérifiera que le fichier de script existe et proposera l'identification avant d'appeler PHP. Cela signifie que le serveur web fourniera des messages d'erreur sensiblement identiques à des erreurs 404 au lieu des erreurs CGI stipulant que PHP n'a pu afficher aucune donnée.

Windows NT/200x/XP et IIS 4 ou plus récent

PHP peut être installé en tant que binaire CGI ou en tant que module SAPI. Dans tous les cas, vous devez démarrer la console d'administration Microsoft (qui doit apparaître comme 'Internet Services Manager', soit depuis le menu des options Pack de votre Windows NT 4.0 ou le menu 'Control Panel=>Administrative Tools' sous Windows 2000/XP). Faites alors un clic droit sur le noeud du serveur web (ceci doit apparaître comme 'Default Web Server'), et sélectionnez 'Properties'.

Si vous voulez utiliser le binaire CGI, suivez ce qui suit :

  • Sous 'Home Directory', 'Virtual Directory', ou 'Directory', faites ce qui suit :
  • Modifier les permissions d'exécution en 'Scripts only'
  • Cliquez sur le boutton 'Configuration', et choisissez l'onglet 'Application Mappings'. Cliquez sur 'Add' et définissez le chemin vers l'exécutable vers le fichier CGI approprié. Un exemple de valeur pour PHP 5 : C:\php\php-cgi.exe. Ajoutez .php en tant qu'extension. Laissez 'Method exclusions' vide, et cochez la case 'Script engine' checkbox. Maintenant, cliquez sur Ok plusieurs fois.
  • Définissez la sécurité appropriée. (Ceci est fait dans 'Internet Service Manager'), et, si votre serveur NT utilise le système de fichiers NTFS, ajoutez le droit à l'exécution pour I_USR_ pour le dossier qui contient php.exe / php-cgi.exe.

Pour utiliser le module SAPI, faites ce qui suit :

  • Si vous ne souhaitez pas faire d'identification HTTP en utilisant PHP, vous pouvez (et vous devez) ignorer cette étape. Dans les filtres ISAPI, ajoutez un nouveau filtre ISAPI. Utilisez PHP en tant que nom de filtre, et ajoutez un chemin vers les fichiers php4isapi.dll / php5isapi.dll.
  • Sous 'Home Directory', 'Virtual Directory', ou 'Directory', faites ce qui suit :
  • Modifiez les permissions d'exécution en 'Scripts only'
  • Cliquez sur le bouton "Configuration" et ajoutez une nouvelle entrée dans "Application Mappings". Cliquez sur 'Add' et définissez le chemin d'exécution vers la bibliothèque DLL ISAPI appropriée. Un exemple de valeur pour PHP 5 est : C:\php\php5isapi.dll. Ajoutez .php en tant qu'extension. Laissez 'Method exclusions' vide, et cochez la case 'Script engine'. Maintenant, cliquez que Ok plusieurs fois.
  • Arrêtez totalement IIS (NET STOP iisadmin)
  • Démarrez IIS (NET START w3svc)

Avec IIS 6 (2003 serveur), ouvrez le gestionnaire IIS, allez aux extensions de services web, choisissez "Add a new Web service extension", entrez-y un nom comme PHP, cliquez sur le boutton 'Add' et pour la valeur, choisissez soit le fichier ISAPI (php4isapi.dll ou php5isapi.dll), soit le fichier CGI (php.exe ou php-cgi.exe), puis cochez "Set extension status to Allowed" et validez en cliquant sur OK.

Afin d'utiliser index.php en tant que page par défaut, faites ce qui suit : depuis l'onglet 'Documents', choisissez 'Add'. Entrez-y index.php et validez en cliquant sur OK. Ajustez l'ordre en choisissant 'Move Up' ou 'Move Down'. Ceci est similaire à la définission de 'DirectoryIndex' sous Apache.

L'étape ci-dessus doit être répétée pour chaque extension qui doit être associée aux scripts PHP. .php est le plus courant, cependant .php3 peut être requis pour certaines applications.

Si vous atteignez 100 % d'utilisation du CPU après quelques minutes, désactivez l'option de configuration Cache ISAPI Application de IIS.

Windows et PWS 4

PWS 4 ne supporte pas ISAPI, uniquement PHP CGI doit être utilisé.

  • Éditez le fichier pws-php4cgi.reg / pws-php5cgi.reg (regardez dans le dossier SAPI pour PHP4 ou dans le dossier principal pour PHP 5) pour indiquer la localisation de votre fichier php.exe / php-cgi.exe. Les slash doivent être échappés. Par exemple : [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w3svc\parameters\Script Map] ".php"="C:\\php\\php.exe" (modifiez en C:\\php\\php-cgi.exe si vous utilisez PHP 5). Maintenant, intégrez ce fichier de registre dans votre système ; vous devriez juste avoir à double-cliquer dessus.
  • Dans le gestionnaire PWS Manager, faites un clic droit sur les dossiers qui supporteront PHP, et sélectionnez "Properties". Cochez l'option "Execute" et confirmez.

Windows et PWS/IIS 3

La méthode recommandée pour configurer ces serveurs est d'utiliser le fichier INF inclus dans la distribution (pws-php4cgi.reg dans le dossier SAPI pour PHP 4 ou pws-php5cgi.reg dans le dossier principal pour PHP 5). Vous pouvez éditer ce fichier, pour vous assurer que les extensions et les dossiers d'installation de PHP sont bien ceux de votre configuration. Ou alors, vous pouvez suivre les instructions suivantes pour le faire manuellement.

Warning

Ces instructions requièrent la manipulation du fichier de registre de Windows. Une erreur peut laisser votre système dans un état instable. Nous vous recommandons vivement de sauvegarder ce fichier en lieu sûr. L'équipe de développement et les traducteurs de cette documentation ne pourront pas être tenus responsable d'un quelconque dommage qui pourrait survenir dans votre registre.

  • Lancez Regedit.
  • Naviguez jusqu'à : HKEY_LOCAL_MACHINE /System /CurrentControlSet /Services /W3Svc /Parameters /ScriptMap.
  • Dans le menu "edit", sélectionnez : New->String Value.
  • Entrez l'extension que vous voulez utiliser pour les scripts PHP. Par exemple : .php
  • Double-cliquez sur la chaîne, et entrez le chemin jusqu'à php.exe dans le champ "value data". Exemple : C:\php\php.exe "%s" %s pour PHP 4 ou C:\php\php-cgi.exe "%s" %s pour PHP 5.
  • Répétez ces étapes pour chaque extension que vous désirez associer à vos scripts PHP.

Les étapes suivantes n'affectent pas la configuration du serveur web, et ne s'appliquent que si vous voulez que vos scripts PHP soient exécutés lorsqu'il sont exécutés en ligne de commande (par exemple, run C:\messcripts\test.php) ou en double-cliquant sur l'icône. Vous pouvez ignorer ces étapes si vous préférez que vos scripts PHP s'ouvrent dans un éditeur de texte, plutôt que de les voir s'exécuter lorsque vous double-cliquez dessus.

  • Naviguez jusqu'à : HKEY_CLASSES_ROOT
  • Dans le menu edit, sélectionnez : New->Key.
  • Donnez le nom de votre extension à la clé. Par exemple : .php
  • Sélectionnez le nom de la nouvelle clé dans le panneau de droite, et double-cliquez dans "default value", puis entrez phpfile.
  • Répétez ces instructions pour toutes les extensions que vous avez associé aux scripts PHP.
  • Créez une autre New->Key sous HKEY_CLASSES_ROOT et nommez-la phpfile.
  • Sélectionnez la nouvelle clé phpfile et, dans le panneau de droite, double-cliquez dans "default value" et entrez PHP Script.
  • Faites un clic droit dans phpfile et sélectionnez New->Key, appelez-la Shell.
  • Faites un clic droit dans Shell et sélectionnez New->Key, appelez-la open.
  • Faites un clic droit dans open et sélectionnez New->Key, appelez-la command.
  • Sélectionnez la nouvelle clé command et dans le panneau de droite, faites un double-clic dans "default value", puis entrez le chemin jusqu'à php.exe. Par exemple : c:\php\php.exe -q %1 (n'oubliez pas le %1).
  • Quittez Regedit.
  • Si vous utilisez PWS sous Windows, redémarrez pour prendre en compte le nouveau registre.

Les utilisateurs de PWS et IIS 3 sont prêts à utiliser leur serveur. Avec IIS 3, vous pouvez utiliser un » outil bien pratique de Steven Genusa pour configurer votre carte des scripts.