IIs-PHP

47
Installation de IIS 6/PHP et MySQL sous Windows Serveur 2003 Devant installer un serveur web dans un OS imposé (Windows 2k3) qui n’est plus tout à fait à jour mais encore fort utilisé dans le monde de l’entreprise avec une technologie web fermé (IIS 6.0) … Le tout non en ASP (.net) mais bien en PHP, pour moi c’est exactement contraire à ma religion mon choix mais bon ici je ne gérais pas l’aspect technique et maintenance … J’ai donc installé IIS 6.0, Fast CGI, PHP5 et MySQL et pour être franc, cela n’a pas été aussi facile que tout le monde le croit. J’ai même eu dur à installer le Web Platform sur le 2003 un vrai crasse ! Après de longues recherches, les fichiers ‘.php’ n’étaient pas interprété par le serveur et celui-ci affichait une erreur 404… (Sur internet j’ai trouvé plein de trucs&astuces mais tous datant de 2005-6 et parlant encore de .dll isapi qui ne sont plus existantes dans les nouvelles versions ou de PATH à modifier puis j’ai éprouvé pas mal de problèmes avec l’extension PHP LDAP … Voici donc étape par étape les opérations à réaliser pour que votre serveur web soit fonctionnel. (A jour en date du 17 février 2011!) 1. Installer le rôle IIS : Rendez-vous dans le « Manage You Server »

Transcript of IIs-PHP

Page 1: IIs-PHP

Installation de IIS 6/PHP et MySQL sous Windows Serveur 2003

Devant installer un serveur web dans un OS imposé (Windows 2k3) qui n’est plus tout à fait à jour mais encore fort utilisé dans le monde de l’entreprise avec une technologie web fermé (IIS 6.0) …

Le tout non en ASP (.net) mais bien en PHP, pour moi c’est exactement contraire à ma religion mon choix mais bon ici je ne gérais pas l’aspect technique et maintenance …

J’ai donc installé IIS 6.0, Fast CGI, PHP5 et MySQL et pour être franc, cela n’a pas été aussi facile que tout le monde le croit. J’ai même eu dur à installer le Web Platform sur le 2003 un vrai crasse !

Après de longues recherches, les fichiers ‘.php’ n’étaient pas interprété par le serveur et celui-ci affichait une erreur 404… (Sur internet j’ai trouvé plein de trucs&astuces mais tous datant de 2005-6 et parlant encore de .dll isapi qui ne sont plus existantes dans les nouvelles versions ou de PATH à modifier puis j’ai éprouvé pas mal de problèmes avec l’extension PHP LDAP …

Voici donc étape par étape les opérations à réaliser pour que votre serveur web soit fonctionnel. (A jour en date du 17 février 2011!)

1. Installer le rôle IIS :

Rendez-vous dans le « Manage You Server »

« Add or Remove a role »

Page 2: IIs-PHP

« Next »

Sélectionnez « Application server (IIS,ASP.NET)

A vous de sélectionner si vous voulez le FrontPage et ASP.NET (c’est optionnel au bon fonctionnement mais bon…)

« Next » (On commence à avoir l’habitude!)

Ce pauvre Windows vous demande des sources pour installer le role, il suffit de mettre le CD ou d’avoir copier le dossier « I368″ sur votre HDD!

Page 3: IIs-PHP

Et voilà c’est enfin fini … (Reste plus qu’à tester si cela est pleinement fonctionnel) => 9 étapes pour faire un apt get install apache2 ou yum

install apache2 …

Start -> All Programs -> Administive Tools -> Internet Information Services IIS Manager

Rendez-vous dans Web Sites -> Default Web Site -> Et activer le (La touche Play) et testez en vous rendant sur http://localhost

Si cela affiche Under Construction c’est que vos IIS fonctionnent bien ! (C’est déjà un bon point!)

Conseil : Pensez toujours à faire les mises à jour Windows …

Jusqu’ici rien de compliqué l’IIS !

2. Installer Fast CGI 1.5 pour IIS6:

J’ai rencontré des problèmes (Erreur404) en installant le PHP sans le Fast CGI,  celui-ci accélérant le display des pages …

Disponible ici : http://www.iis.net/download/fastcgi

On va donc l’installer et je vous conseille fortement de le faire sinon c’est pas certain que ça marchera !

Page 4: IIs-PHP

Il vous suffit de lancer l’exécutable suivant et d’appuyer sur « Install »

3. Installer PHP5. pour IIS6:

Dans mon cas je vais utiliser la dernière en date :  la version 5.3.5 , Pour Windows il faut la VC9 et je vous conseille la NTS (Non Thread Safe)

Lancez le php-5.3.5-nts-Win32-VC9-x86.msi que vous trouverez sur windows.php.net

Next

Cochez : « I accept the terms in the Licence Agreement » -> « Next »

Page 5: IIs-PHP

Choisissez le chemin d’installation (moi j’ai laissé « C:\Program Files\PHP\ »)

Comme dans ce tuto nous avons installé le IIS FastCGI car sans ça, ça ne fonctionnait pas, donc nous le cochons!

Ici installez TOUTES Les extensions donc vous avez besoin, car si vous ne les cochez pas, les dll ne se copieront pas dans le dossier ext/ et pour installer l’installer il ne vous suffira pas de l’activer par le fichier php.ini (exemple :

extension=php_ldap.dll) -> Perso j’ai besoin du LDAP

Start -> All Programs -> Administive Tools -> Internet Information Services IIS Manager-> Web Service Extension -> Add a new Web

extension

Page 6: IIs-PHP

Entrez dans Extension name : « Fichier PHP » et rajoutez (ADD) l’exécutable php-cgi.exe qui se trouve ici « C:\Program Files\PHP\php-

cgi.exe »

Personnellement j’ai essayé avec le php.exe , php-win.exe voir php5isapi.dll, php5nsapi.dll ou encore php5ts.dll SANS SUCCÈS … (Attention ne prenez pas des

dll de version EasyPHP,Wamp,Xampp,Mamp,… car les dll sont prévue pour du Apache !)

Clic droit sur « Fichier PHP » -> « Allow »

Rendez vous dans l’onglet « Default Web Site » -> Clic droit -> Properties

Onglet « Home Directory » -> « Configuration »

Page 7: IIs-PHP

« Add »

Entre dans le champ Executable : « C:\Program Files\PHP\php-cgi.exe » (Avec les guillemets car nous avons une espace dans « ProgramFiles »)

Et dans l’extension : « .php » (sans les guillemets cette fois)

OK

Start -> Execute -> cmd -> iisreset (pour redémarrer l’IIS)

Et créer dans le « C:/Inetpub/wwwroot/ » un index.php et écrivez dedans

<?php

phpinfo()

Et lancez IE et allez sur http://localhost/index.php et ça fonctionne : ça affiche le phpinfo !

4. Installer MySQL :

Nous allons utiliser la technologie mysql pour le stockage de base de donnée (c’est bien souvent un standard)

La version actuelle au moment ou je vous parle est la 5.5.8 pour win32/64 trouvable ici : http://dev.mysql.com/downloads/mysql/

Page 8: IIs-PHP

Lancez l’installer « mysql-5.5.8-win32.msi » -> « Next »

Cochez « I accept the terms in the Licence Agreement » (N’oubliez pas de lire les 63 Pages !)

Nous allons l’installer normalement en « Typical » (ne compliquons pas les choses)

« Install »

« Next »

Page 10: IIs-PHP

Pour ma part c’est une machine qui va rentrer en production donc je sélectionne le « Server Machine » -> « Next »

« Multifunctionnal Database » -> « Next »

Si vous avez une partition ou un disque différent pour le stockage de la base de données. -> « Next »

« Decision Support (DSS)/OLAP » -> »Next »

(Pour cette partie je vous conseille de désactiver votre Firewall/Antivirus)

Page 11: IIs-PHP

Et rajoutez toujours « Add Firewall exception for this port » le port par défaut est le 3306 -> » Next »

« Standard Character Set » -> Next »

Installez le comme service pour que celui-ci démarre avec Windows (Lauch the MySQL Server automatically)

Inscrivez un mot de passe complexe (Majuscule-Minuscule-Caractère Spéciaux-chiffre!) Et si vous devez attendre la DB en remote sélectionnez

le!

Et voila, l’installation va se faire. Des fois l’installation, bloque à l’installation du service , je vous conseille de désinstaller l’instance , puis désinstaller le mysql server , lancer un Ccleaner (fichier/registre) puis relancer l’installation de mysql server from

scratch!

5. Installer PHPMyADMIN:

Pour administrer la base de données, je vais utiliser PHPMyadmin qui permet de créer des tables , utilisateurs , dumper des SQL, …

Télécharger le zip sur http://www.phpmyadmin.net/home_page/downloads.php version 3.3.9.2

Page 12: IIs-PHP

Copiez et  Décompressez le contenu du zip dans le « C:/Inetpub/wwwroot/ »

et renommez le dossier en phpmyadmin

Rendez-vous sur http://localhost/phpmyadmin et loguer vous en « root »

votre mot de passe a été définis pendant l’installation de MySQL server

Et voila maintenant vous pouvez administrer les Database en en créant de nouvelle

Ajout d’accès (Privilèges), Import Export , …

Cependant des fois si vous importez une SQL un peu trop grande la page charge et s’arrête ou affiche un erreur en cours de route …

Page 13: IIs-PHP

Il faut modifier des valeur PHP pour augmenter les valeurs de temps limite d’exécution , maximum de la ram utilisable , l’envoie maximum de fichier , …

Le fichier a modifier est PHP.ini

Les valeurs a augmenter sont :

max_execution_timemax_input_timememory_limit

upload_max_filesizepost_max_size

Voila maintenant vous savez tout !

Page 14: IIs-PHP

Microsoft IIS 5.1 et IIS 6.0Cette 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 = 1fastcgi.logging = 0cgi.fix_pathinfo=1cgi.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:

Page 15: IIs-PHP

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 :

1. Dans le menu de démarrage de Windows, choisissez : "Run:", tapez "inetmgr" et cliquez sur "Ok";

2. 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";

3. Cliquez sur l'onglet "Directory Security";4. Prenez note du champ "User name:" dans le dialogue "Authentication

Methods"

Page 16: IIs-PHP

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 :

1. Dans le menu de démarrage Windows, choisissez "Run:", tapez "inetmgr" et cliquez sur "Ok";

2. faîtes un clic droit sur le nœud "Web Sites" de l'arbre et sélectionnez "Properties";

3. Cliquez sur l'onglet "Documents";4. Cliquez sur le bouton "Add..." et entrez "index.php" comme "Default content

page:".

Page 17: IIs-PHP

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-

Page 18: IIs-PHP

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\"

Microsoft IIS 7.0 et suivants Microsoft IIS

[edit] Last updated: Fri, 16 Mar 2012  

add a note User Contributed Notes Microsoft IIS 5.1 et IIS 6.0 bjorn dot tornroth at nettitonttu dot fi 12-Feb-2012 09:45 If you receive:

Input Error: There is no script engine for file extension ".js".

When executing:

cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe"

Include the switch:

/e:jscript

Like this:

cscript /e:jscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\PHP\php-cgi.exe"

Worked on freshly installed XP Pro ENG SP3(updated). Anonymous 10-Feb-2012 02:53 I am using Win 2003 Server SP2, IIS 6, Installing PHP 5.3.10 as FastCGI

Page 19: IIs-PHP

If you continue to receive FastCGI could not proccess your request - Access Denied Error -5 check to make sure the IIS_WPG Group has Read, Read/Execute permission to the PHP installation directory and is inherited to the php-cgi.exe file.

Also, in researching this problem during my installation, I also found that you should have an entry in the IIS Web Extensions for the php-cgi.exe. koen dot bauwens at fracarita dot org 08-Sep-2011 12:42 When executing:

cscript %windir%\system32\inetsrv\fcgiconfig.js -add -section:"PHP" ^More? -extension:php -path:"C:\PHP\php-cgi.exe"

You get this response:

Microsoft (R) Windows Script Host Version 5.6Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

C:\WINDOWS\system32\inetsrv\fcgiconfig.js(1348, 5) (null): 0xFFFFFFDF

Then check if in the C:\WINDOWS\system32\inetsrv\fcgiext.ini file the next text is present:

[Types]php=c:\php\php-cgi.exe

[c:\php\php-cgi.exe]QueueLength=999MaxInstances=20InstanceMaxRequests=10000IdleTimeout=90RequestTimeout=90

If not, add it, worked for me! gsaarenvirta at makeplain dot com 13-Mar-2011 04:49 A note for your reference ... I was getting error 404 "file not found when trying to browse .php" files in \inetpub\wwwroot although .html files worked fine... messed around for hours until I tried this on advice of a friend.

FYI ...

Operating system Windows Server 2003 SP2 x64IIS v6.0 PHP v 5.3.5 nts windows x86Microsoft C++ 2008 redistributableno fastcgi

Followed all the manual PHP configuration instructions very carefully, set php.ini directives, gave appropriate permissions to "IUSR_(machine)", set up web extensions etc. etc.

The final fix that made everything work... renamed 'php.ini' to 'php-cgi-fcgi.ini'

Hope this saves someone hours... crab dot crab at gmail dot com 18-Nov-2010 11:40

Page 20: IIs-PHP

I am using Win 2003 Server, IIS 6, PHP 5.

If you see "You are not authorized to view this page" error when running your PHP page.

Try one more thing:1. Right-click {C:\php} (or your PHP installation root) and select {Properties}2. Select {Security} tab and click {Add} button3. Enter {ComputerName/IUSR_ComputerName} as object name and press {OK}4. Select {Read & Execute} as permissions5. Click {Advanced} button and select {Allow inheritable permissions from the parent...} checkbox6. Press {OK} Anonymous 12-Oct-2010 01:49 Facts: WinXp Pro, IIS 5.1, add extension ".php" to default web site, Ok button disabled from application configuration mapping after setting the path to executable

Solution: Click inside the textbox after setting the path will enable ok button

Source: http://support.microsoft.com/?id=317948 Anonymous 14-Sep-2010 10:29 i`ve the same trouble after the install php 5.2.14-nts on IIS6 (Win2003Server)- try to open-dialog when php-file is opening...

I`ve to manual add .php in "Application configuration"  ... \system32\inetsrv\fcgiext.dll  (even this option selected in installation - "Script executable")

this solved the problem :) Neil Plumridge 24-Aug-2010 07:00 Using WinXP/SP3, IIS5.1, I found that following the instructions added the .PHP file association to the 'Web Sites' level in the IIS Manager, but when I tried to access a PHP page my browser tried to download it.  I had to add the same .PHP file association to the 'Default Web Site' configuration too. joseph dot dew at metso dot com 28-Jun-2010 09:44 Using PHP 5.3.2 non thread safe VC9 I had to copy the php.ini to php-cgi-fcgi.ini otherwise I just got 404 errors.

Page 21: IIs-PHP

Étapes pour une installation manuelleCette section contient les instructions pour installer manuellement et configurer PHP sous Microsoft Windows. Si vous recherchez la façon dont doit être utilisé l'installeur PHP pour installer et configurer PHP et un serveur Web sous Windows, référez-vous à l'installeur Windows (PHP 5.2 et suivants).

Sélection et téléchargement de PHP

Téléchargez l'archive PHP depuis »   PHP pour Windows: Binaires et sources . Il y a plusieurs versions de l'archive zip - choisissez la version correspondante au serveur web que vous utilisez :

Si PHP est utilisé avec IIS, alors choisissez PHP 5.3 VC9 Non Thread Safe ou PHP 5.2 VC6 Non Thread Safe;

Si PHP est utilisé avec IIS7 ou supérieure et PHP 5.3+, alors les binaires VC9 de PHP doivent être utilisés.

Si PHP est utilisé avec Apache 1 ou Apache 2, alors choisissez PHP 5.3 VC6 ou PHP 5.2 VC6.

Note:

Les versions VC9 sont compilées avec le compilateur Visual Studio 2008 et sont optimisées en terme de performance et de stabilité. Les versions VC9 nécessitent d'avoir »   Microsoft 2008 C++ Runtime (x86) ou »   Microsoft 2008 C++ Runtime (x64) d'installé.

La structure et le contenu du paquet PHP

Décompressez le contenu de l'archive zip dans le dossier de votre choix, par exemple C:\PHP\. La structure des dossiers et des fichiers extraits depuis l'archive zip ressemble à ceci :

Exemple #1 Structure d'un paquet PHP 5

c:\php | +--dev | | | |-php5ts.lib -- php5.lib en version non thread safe | +--ext -- bibliothèques DLLs pour PHP | | | |-php_bz2.dll | | | |-php_cpdf.dll | | | |-... | +--extras -- vide

Page 22: IIs-PHP

| +--pear -- copie initiale de PEAR | | |-go-pear.bat -- script d'installation de PEAR | |-... | |-php-cgi.exe -- exécutable CGI | |-php-win.exe -- exécution de scripts sans avoir un prompt de commande ouvert | |-php.exe -- exécutable de ligne de commande (CLI) | |-... | |-php.ini-development -- configuration par défaut du php.ini | |-php.ini-production -- configuration recommandée du php.ini | |-php5apache2_2.dll -- n'existe pas dans la version non thread safe | |-php5apache2_2_filter.dll -- n'existe pas dans la version non thread safe | |-... | |-php5ts.dll -- bibliothèque DLL coeur de PHP ( php5.dll en version non thread safe) | |-...

Voici la liste des modules et des exécutables inclus dans l'archive zip de PHP :

go-pear.bat - le script de configuration de PEAR. Référez-vous à l'»   installation de PEAR pour plus de détails.

php-cgi.exe - exécutable CGI qui peut être utilisé lors de l'exécution de PHP sous IIS via CGI ou FastCGI.

php-win.exe - l'exécutable PHP pour l'exécution de scripts PHP sans fenêtre de ligne de commande (par exemple, des applications PHP qui utilisent un GUI Windows).

php.exe - l'exécutable PHP pour l'exécution de scripts PHP dans une interface de ligne de commande (CLI).

php5apache2_2.dll - module Apache 2.2.X. php5apache2_2_filter.dll - filtre Apache 2.2.X.

Modification du fichier php.ini

Après l'extraction du contenu du paquet PHP, copiez le fichier php.ini-production dans le fichier php.ini du même dossier. Si nécessaire, il est également possible de

Page 23: IIs-PHP

placer le fichier php.ini dans le dossier de votre choix mais cela nécessite d'autres étapes de configuration décrites dans la configuration de PHP.

Le fichier php.ini indique à PHP la façon doit il doit se configurer, mais aussi la façon dont il doit travailler avec l'environnement sur lequel il s'exécute. Voici quelques concfigurations du fichier php.ini qui aide PHP à fonctionner d'une meilleure façon sous Windows. Quelques-unes sont optionnelles. Il y a bien d'autres directives utiles pour votre environnement - référez-vous à la liste des directives du php.ini pour plus d'informations.

Directives nécessaires :

extension_dir = <chemin vers le dossier des extensions> - extension_dir doit pointer vers le dossier contenant les fichiers des extensions PHP. Le chemin peut être absolu (e.g. "C:\PHP\ext") ou relatif (e.g. ".\ext"). Les extensions listées ci-dessous dans le fichier php.ini doivent se trouver dans le dossier extension_dir.

extension = xxxxx.dll - Pour chaque extension que vous voulez activer, vous avez besoin d'une directive "extension=" qui indique à PHP quelles extensions du dossier extension_dir doivent être chargées au démarrage.

log_errors = On - PHP a une fonctionnalité permettant d'historiser les erreurs, pouvant être utilisée pour envoyer les erreurs dans un fichier, ou vers un service (i.e. syslog) et fonctionne en conjonction de la directive error_log ci-dessous. Lors de l'exécution sous IIS, log_errors devrait être activée, avec une valeur valide de error_log.

error_log = <chemin vers le fichier d'historisation des erreurs> - error_log doit spécifier le chemin absolu ou relatif vers un fichier où les erreurs PHP doivent être écrites. Le fichier doit être accessible en écriture par le serveur web. L'endroit commun de ce fichier est le dossier TEMP, par exemple, "C:\inetpub\temp\php-errors.log".

cgi.force_redirect = 0 - Cette directive est nécessaire pour le fonctionnement sous IIS. Elle est relative à la sécurité et est nécessaire par bons nombres de serveurs web. Cependant, son activation sous IIS fera échouer le moteur PHP sous Windows.

cgi.fix_pathinfo = 1 - Cette directive permet à PHP d'accéder aux informations concernant le chemin réel suivi par la spécification CGI. Cette directive est nécessaire lors de l'implémentation de FastCGI sous IIS.

fastcgi.impersonate = 1 - FastCGI sous IIS supporte la possibilité de rendre impersonnels les éléments relatifs à la sécurité lors d'un appel client. Ceci permet à IIS de définir le contexte de sécurité sur lequel la demande est effectuée.

fastcgi.logging = 0 - L'historisation FastCGI doit être désactivé sous IIS. S'il est activé, alors tous les messages de toutes les classes seront traités par FastCGI comme des conditions d'erreur, ce qui fera qu'IIS générera des exceptions HTTP 500.

Directives optionnelles

max_execution_time = ## - Cette directive demande à PHP un maximum de temps afin d'exécuter un script donné. Par défaut, c'est 30 secondes.

Page 24: IIs-PHP

Augmentez la valeur de cette direction si l'application PHP prend plus de temps à s'exécuter.

memory_limit = ###M - La mémoire maximale disponible pour le processus PHP, en méga-octets. Par défaut, c'est 128, ce qui est parfait pour la plupart des applications PHP. Pour des applications plus complexes, il peut être nécessaire d'augmenter cette valeur.

display_errors = Off - Cette directive indique à PHP si les messages d'erreur doivent être inclus dans le flux retourné au serveur web. Si défini à "On", alors PHP les enverra, suivants les classes d'erreur que vous avez définies avec la directive error_reporting, au serveur web comme partie du flux d'erreur. Pour des raisons de sécurité, il est recommandé de définir à "Off" cette directive sur les serveurs de production afin de ne pas révéler les informations concernant la sécurité, qui sont inclues dans les messages d'erreur.

open_basedir = <chemins vers les dossiers, séparés par un point virgule>, e.g. openbasedir="C:\inetpub\wwwroot;C:\inetpub\temp". Cette directive spécifie le chemin vers le dossier où PHP est autorisé à effectuer des opérations sur le système de fichiers. Toute opération en dehors de ces chemins retournera une erreur. Cette directive est spécialement utile pour cantonner l'installation de PHP dans des environnements partagés afin d'éviter que les scripts PHP accèdent à tout fichier se trouvant en dehors du dossier racine du site web.

upload_max_filesize = ###M et post_max_size = ###M - La taille maximale autorisée, respectivement, d'un fichier téléchargé et des données de type POST. Les valeurs de ces directives devraient être augmentées si les applications PHP doivent effectuer de gros téléchargements, comme des images ou des fichiers vidéos.

PHP est maintenant configuré pour votre système. La prochaine étape est de choisir un serveur web et de la configurer pour y faire fonctionner PHP. Choisissez un serveur web depuis la table de contenus.

En plus de faire fonctionner PHP via un serveur web, PHP peut être exécuté depuis la ligne de commande, à la façon des scripts .BAT. Reportez-vous au chapitre sur la ligne de commande PHP sous Microsoft Windows pour plus d'informations.

Microsoft IIS Installeur Windows (PHP 5.2 et suivant)

[edit] Last updated: Fri, 16 Mar 2012

add a note User Contributed Notes Étapes pour une installation manuelle

WindowsPHPuser at example dot com 25-Jan-2012 07:51

Regarding this:"On this page and the FAQ they point out that to reset the Windows PATH variable to include your php dir, you need to completely restart

Page 25: IIs-PHP

the machine."

Note that this is not the case in Windows 7. (I'm not sure about Vista).

v_moral at hotmail dot com 24-Feb-2011 04:13

Problems setting up PHP as an Apache module under Windows?

To install php+apache+win32+mysql with PHP as an Apache module consider the following hints :

- download the 'VC6 x86 Thread Safe' zip file from http://windows.php.net/download/ . Couldn't make the Non Thread Safe version to work as a loadable module from Apache.

- if you set extension=php_mysql.dll and still have problems, copy the file  libmysql.dll (shipped with php's zip) to your WINDOWS\System32\ directory. The apache-mysql module fails trying to find this library.

pragal86 at gmail dot com 02-Feb-2011 03:36

step 1 : clear port 80. ( my computer->manager ->services and application ->services ->iis ->disable )

step 2 : install Apache by exe.        (check if green color is display near apache otherwise some problem in Apache installation).

step 3 : Copy php folder and past it into 'c directory' .

step 4 : Give class path = c:\php;c:\php\ext;

    (mycomputer->properties->advance->environmentalproperties->path = c:\php;c:\php\ext; ).

step 5 :  Open httpd.conf, that is located in Apache web server installation folder, under conf directory i.e.,

    Apache Installation folder > conf > httpd.conf

    Add these lines....

    LoadModule php5_module "c:/php/php5apache2_2.dll"

    AddType application/x-httpd-php .php

    PHPIniDir "C:/php"

Step 6: goto php installation directory, there u'll find a file named php-ini-recommended, rename it to, 'php.ini'.

Page 26: IIs-PHP

Step 7: Now time to modify php-ini, file... open the file in notepad, look for extension=php_mysql.dll,        uncomment it, i.e., delete ";" thats prefixed...also look for "extension_dir=" append "C:\php\ext"

    incase ur php installation directory is php else "C:\%installation dir%\ext"

sterp 8 : find directory index in http.conf and add index.php with index.html

Step 9: Copy libmysql.dll to c:\windows\system32

step 10 : run mysql exe to install it.

step 11 : download phpmysql and place that in htdocs and rename it to phpmyadmin.s

        check php and apache installation by give 'local host' in address bar in any browser, If 'Its work' is displayed then its installed correctly and

    check the green color in Apache.

    Php and apache installation is done ......:):)

jp at pulgadascubicas dot com 05-Dec-2010 12:43

Trying to install PHP 5.3.3 VC9 Non-Thread-Safe on Windows 2008 Server running IIS 7.5.

Followed the instructions carefully but still got a 500 error trying to open the classig phpinfo page. After a lot of searching I discovered that everything worked fine after changing the php.ini directive fastcgi.logging from 0 to 1, contrary to what the directions said. I wonder if it was a typo on the instructions or if something changed after a few versions.

Hope this saves someone a couple of hours of searching.

Anonymous 22-Apr-2010 08:07

It should be noted that even before starting PHP installation, you should research extension requirements for those you plan to use.  For a list of common extensions and dll requirements and prerequisites, see the table on this php.net page: http://www.php.net/manual/en/install.windows.extensions.php

Commonly used extensions are listed in alphabetical order in the default php.ini file that comes with the windows packages.  Some extensions must be loaded before others or else the server may crash

Page 27: IIs-PHP

with an unhelpful, seemingly unrelated dll error.  For example, in your php.ini file, you must manually place 'extension=php_exif.dll' -after- 'extension=php_mbstring.dll' if you wish to use the exif and mbstring extensions or else your server may crash.  The msi installer may or may not automatically have correct load order, but for manual installs, it does not.

Do not attempt to uncomment extension lines in the default php.ini file that comes packaged with php install or zip packages without knowing what you're doing.  Before loading extensions in this manner, be sure you have met the prerequisites for load order and have ready any missing dll files listed in the above link.

rich at corephp dot co dot uk 02-Jul-2009 05:02

The part about adding the Path to the System Environment Variables is different on Vista. On XP you DO need to reboot for the Path change to be picked-up correctly. On Vista however you do not, the change is instant.

dkflbk at nm dot ru 19-Jun-2009 06:46

There is a way to install PHP with nginx-server under windows (current version is 0.7.60)

Step-1 (install nginx server) Just extract nginx-0.7.60.zip in C:\nginx-0.7.60

In C:\nginx-0.7.60\conf\nginx.conf uncomment and edit following lines

        location ~ \.php$ {             root           html;             fastcgi_pass   127.0.0.1:9000;             fastcgi_index  index.php;             fastcgi_param  SCRIPT_FILENAME  C:/nginx-0.7.60/html$fastcgi_script_name; #this is the one line for edition             include        fastcgi_params;         }

and run C:\nginx-0.7.60\nginx.exe (the server is started)

Step-2 (install PHP5) Just extract php in C:\PHP5

Create (or modify) php.ini

extension_dir="ext/" ;for extensions

And run C:\PHP5\php-cgi.exe -b 127.0.0.1:9000

txyoji 17-Apr-2009 07:36

Page 28: IIs-PHP

php 5.1.6 zip package for windows does not include a module for apache2.2.

Use apache2.0.x or 1.3.x instead.

dee at example dot com 04-Feb-2009 01:57

I did a clean install of Apache 2.2 and PHP 5.2.6 due to conflicts with the old httpd.conf file I had and ran into the "Call to undefined function mysql_connect()" error when trying to run a script that connects to MySQL.

To resolve it I had to copy libmysql.dll from my PHP installation directory to the "bin" folder of my Apache install directory.

I checked the forums.mysql.com as someone else suggested which lead me to this site with the missing step I needed (http://www.artfulsoftware.com/php_mysql_win.html). I spent a good part of the afternoon trying set this up. Hopefully it helps someone out.

chhabra_gurpreet at yahoo dot com 11-Jan-2009 11:34

Hi everyone, well i've been trying to configure, install, this setup i.e., Apache, php and mysql, well the prb wat i faced was that most of the installation instructions were quite outdated as they used quite old softwares... well these are the simple steps install and configure this entire setup, hope it will help u....(this is for windows)Software versions:Apache - 2.2.11Mysql -  5.1.30-communityPhp - PHP Version 5.2.8

Step 1: Default installation of ApacheStep 2: Default installation of mysqlStep 3: Download php zip file, extract it to ur C: drive under c:\phpStep 4: Add these paths to ur classpath, "C:\php", "C:\php\ext", incase ur installation directory is php, else watever is the name of ur php installation directory use that instead of phpStep 5: Open httpd.conf, that is located in Apache web server installation folder, under conf directory i.e.,Apache Installation folder > conf > httpd.confAdd these lines.... >LoadModule php5_module "c:/php/php5apache2_2.dll">AddType application/x-httpd-php .php Step 6: goto php installation directory, there u'll find a file named php-ini-recommended, rename it to, php-ini.Step 7: Now time to modify php-ini, file... open the file in notepad, look for extension=php_mysql.dll, uncomment it, i.e., delete ";" thats prefixed...also look for "extension_dir=" append "C:\php\ext" incase ur php installation directory is php else "C:\%installation dir%\ext"Step 8: Copy libmysql.dll to c:\windows\system32

Page 29: IIs-PHP

done.......... ;)

philmee95 at gmail dot com 27-Jul-2008 02:52

64 bit windows issues. PHP is 32 bit, and w3svc can only run under 32 or 64...not both. You will have to set 32 bit compat mode.http://www.iisadmin.co.uk/?p=14

supportatradiormidotcom 12-Mar-2008 04:44

Im running Win 2003 PHP 5 with the isapi.dll thanks to this sipmle tutorial hope it will help someone.Cerdit goes to Peterguy.

http://www.peterguy.com/php/install_IIS6.html

Follow the instructions, PHP install made easy

bill at onemeg dot com 19-Feb-2008 03:48

Your PHP.INI file is not required to be in the C:\WINDOWS folder in XP.  The trick is to make sure that the PHP.INI can be found.  If you fail to reboot after adding the PHP folder to the path and creating the PHPRC environment variable, the file will likely not be found.  If you can't reboot, then try creating the registry entries as described in the following document:

http://www.php.net/manual/en/configuration.php

When you execute "phpinfo();" pay special attention to the data returned in "Loaded Configuration File".  If it does not show a path and a the PHP.INI file name, the file is not being loaded.  The path of C:\WINDOWS in the Configuration File Path section is the default location where PHP looks for the INI file and does not mean that the file must be located there; in fact, the following document suggest that you leave the configuration file in the C:\PHP folder:

http://www.php.net/manual/en/install.windows.manual.php

ik2008 at sipvantage dot com 18-Jan-2008 12:34

In windows XP, the php.ini file must be in c:\windows directory. Or else most of the functions will work except mysql functions. The very first mysql command mysql_connect will fail with the following message "Call to unsupported or undefined function mysql_connect(); "

fgabrieli at gmail dot com 09-Jul-2007 08:55

Problem:Error in my_thread_global_end(): 1 threads didn't exit

It seems that php 5.2.3 libmysql.dll does not work as expected, because Apache shows this error in the logs when we use mysql_*() functions

Page 30: IIs-PHP

Solution:I found it here:http://forums.mysql.com/read.php?10,153077,155121#msg-155121

which is to replace 'libmysql.dll' file in your PHP installation directory (also in winnt/system32 if you copied it there) with the Dll from PHP 5.2.1

You can download the second one from here:http://www.php.net/get/php-5.2.1-Win32.zip/from/a/mirror

Regards,Fernando Gabrieli

sam b 29-Jun-2007 01:53

I ran across the same problem listed below, using IIS6 instead of Apache on Windows Server 2003.

It seemed that I could run a PHP script on the command line just fine, and lines such as:<? if(function_exists("mysql_connect")) echo "MySQL is present."; ?>ran without error, and printed as expected.

Loading the file via IIS (using Firefox from my Ubuntu workstation), it wouldn't print anything, indicating that the MySQL extension hadn't been loaded.

Fix: rename/delete all "libmysql.dll" except for the one in "C:\PHP\ext" or equivalent.

... Same fix as listed below, but I wanted to point out: it's relevant to IIS as well.

adozolj at yahoo dot com 28-Jun-2007 09:41

I got the 'Fatal Error: call to unindentified function mysql_connect()' and resolved it after many hours of troubleshooting. The problem has to do with the libmysql.dll file residing in multiple directories. It SHOULD only be in the php directory. So, erase the copy in mysql bin and the apache bin and restart apache. I hope this helps someone. if this doesn't help check out forums.mysql.com and search "Call to undefined function mysql_connect". (i got the solution to this problem from here)

Shivan at Freenet dot de 27-Jun-2007 01:57

I had the same problem on IIS6 with php 5.2.3, that I got a blank page and nothing more, but the phpinfo(); worked.

The cause wasn't the not-set doc_root, but after enabling "show errors" I got an error message, that my script used more than 8 MB... ;)

Page 31: IIs-PHP

After enlarging memory it worked :))))

jussi dot korhonen at evtek dot fi 30-May-2007 04:27

With MySQL 5.0.41 & Apache/2.2.4 & PHP/5.2.2 on Windows XP SP2 php_mysql.dll failed to load. All configurations, including php extension dir and windows path seemed to be correct. After hours of tinkering, I found that my MySQL bin/-directory contained a libmysql.dll too.Because MySQL bin/-directory was before c:\php-directory in PATH, PHP tried to use MySQL version of libmysql.dll and failed miserably. By putting c:\php in PATH before MySQL everything worked like a charm!

andyfrazer at gorillasites dot com 24-May-2007 10:18

I was trying to start Apache 2.2.4 using PHP5.2.2 on Windows XP. When I added the following command to the Apache httpd.conf file:

LoadModule php5_module "c:/php/php5apache2.dll"

Apache would not start. When I removed that command, it started fine.

Based on a suggestion in http://www.apachelounge.com/forum/viewtopic.php?t=570, I tried this instead:

LoadModule php5_module "c:/php/php5apache2_2.dll"

and it started up immediately.

I wasted two evenings trying to get this work before I found the link to the ApacheLounge forum. I hope this helps someone else.

dr dot juanc at yahoo dot com 17-Apr-2007 07:18

Installing PHP5.2.1 in IIS 6.0 bring me some troubles too.

First i need to use full tag to make it your php script works and second the IIS didn't want to load the extension in the ext folder. I cheked the configuration a couple of thousand of time and everything seen to be ok.

I fixed up given read access in the "ext" folder to de "IUSER/PCNAME" user or to everyone/PCNAME user to the same folder. Just in case i did the same in the rest of the folder inside the php folder.

I wish nobody loose an all day in the same thing, like me.

excuse my english please

shane 20-Mar-2007 02:17

Page 32: IIs-PHP

IIS Windows 2003 server.

You have upgraded to PHP5 from PHP4. phpinfo- works fine. You cannot however communicate with mysql (for example) through phpMyAdmin as it throws up an error stating it cannot load the mysqli extension and/or you get the 'bad handshake' warning.

Solution: update your libmySQL.dll file in your system32 folder. This requires you to stop all internet services on your computer i.e IIS. Full details below.

#############################Background: my server is set up as follows:

php files folder == C:\PHPI have configured my php.ini file opening up the required extensions etcI have mapped the necessary extension to IISI have configured my website extension(s)I have mapped  my windows path ';C\PHP;C\PHP\ext'I have registered my ini fileI have tested my phpinfo() and it worksI have installed phpMyAdmin and it refuses to workI have tried simple mysql connection scripts ...nadaI have checked everything 50 timesI am bald.

Then I did this:

##############################

1) Copy 'libmySQL.dll' from C:\PHP (or the folder where you have loaded php into)

2) Open 'Windows\system32' folder. Do nothing at the moment, just have this window 'to hand'.

3)Open IIS manager snap in(control panel - administrative tools - IIS manager)

Right click server name as shown below:

- Internet Information Services    - My Computer (local computer) - right click

Select 'all tasks' then 'Restart IIS...'Use drop down then select 'stop internet services on XXXXX' and click 'OK'

4) Return to your 'Windows\system32' folder. Paste 'libmySQL.dll' (it is already in your clipboard from step 1). It will warn you about overwrite the current one. Select YES.

Page 33: IIs-PHP

5) Return to IIS manager. Follow steps as in '3' above except now choose 'Restart Internet Services on XXX' (the default option), click OK.

#############################

I hope this works for you.

hkhasgiwale at gmail dot com 05-Feb-2007 10:26

I wasted a lot of time trying to figure out the problem of not being able to display my 'test.php' demo script to work, the file lay in my IIS 5 " C:\inetpub\wwwroot" folder.

The file contents of test.php were: <?php>phpinfo();<?>

Windows php installer version was 5.2.0

Problem lay in the minute dumb feature of windows explorer being used t change(rename) text file extension from 'test.txt' to 'test.php'.The resultant name looked by the IIS was still 'test.php.txt'.

I used command line to change the filename to 'test.php' and it displayed in my browser.

http://localhost/test.php, worked right away.

simon at dna dot co dot nz 23-Jan-2007 02:42

I have found a lot of references to run the below script to test whether PHP is running:<?phpinfo();?>

Unfortunately this does not work with a php.ini based from php.ini.recommended as that has short tags turned off by default.Use full tags, as recommended anyway, otherwise you will just get a blank page.

<?phpphpinfo();?>

This is probably real basic to php old timers but can easily catch us newbies.

Daniel 01-Dec-2006 09:11

Re: Manual Configuration, pathing errors in IIS and ISAPI setup

Page 34: IIs-PHP

Chris @ 11-Oct-2006 and phpmanual at pbb dot dds dot nl @ 07-Oct-2004 are both correct.

Problem is not with PHP but with IIS (mine is v5.1).

Installed PHP into C:\Program Files\PHP, and set environment variable PATH to path as stated.

When selecting the installation of php5isapi.dll via IIS Administrator, IIS would insert the path as:

"C:\Program Files\PHP\php5isapi.dll" (note the quotes and space in directory name)

All scripts ran and produced a HTTP 500 error.

Replaced ISAPI path in IIS with:

C:\PROGRA~1\PHP\php5isapi.dll (note the removal of the quotes and spaces, and the replacement of the path with 8.3 format names)

All scripts ran w/o problems.

Thanks to all! I hope someone can report if a similar problem exists with IIS6/7.

Chris 11-Oct-2006 07:58

RE:  phpmanual at pbb dot dds dot nl  @ 07-Oct-2004 11:29

You are correct.  I just had the same issue; I was following the PHP installation instructions and some very helpful WIMP instructions.

I was trying to keep things tidy by putting my PHP directory in C:\Program Files\PHP.  I set the PATH variable, ISAPI filter config and extension in Application Configuration, but was getting the "Specified module could not be found" error.

Changed the PHP directory to C:\PHP and reconfigured everything, did an iisreset, and it started working immediately.

Good catch, and thank you!

mega-squall at caramail dot com 23-Jul-2006 02:19

Remember to enter FULL PATH in the extension_dir parameter in php.ini ! Using only "./ext/" or any relative path will have your PHP failing to load extensions when called by Apache. That's quite tricky 'cause extensions are working when PHP is used through command line ...

Jason Greene 04-May-2006 06:06

If you are running websites within an Application Pool (which is now the default for IIS6 under 2K3) you need to make sure that your PHP

Page 35: IIs-PHP

directory (e.g. C:\PHP) has read permissions for the user assigned to the Application Pool.

1. In the IIS snap-in, choose Application Pools2. Right-click on DefaultAppPool (or other, if you have one defined) and choose Properties3. Click the Identity tab4. Make a note of the user name set as the security account for this application pool (e.g. "Network Service")5. Browse to your PHP directory and grant that user read permissions for the entire directory.

In my case, I had to add permissions for the user "NETWORK SERVICE" to get PHP scripts to work. Otherwise I received 401/403 authorization errors when trying to load them in a remote browser.

Note also that first tried adding IUSR permissions to the PHP directory, but that had no effect.

Ben 06-Apr-2006 03:17

In the Note Titled "Windows Server 2003 (x64 bits) + IIS 6.0" in step 1 when adding your new .php extension, it will not work unless after you click on the "Home Directory" you make sure that your "Execute permissions:" are set to "Scripts Only".

By default, on my machine, the permissions were set to "None" not allowing php to run.

Also, for more security it might be wise to Add the new extension just to your default site instead of the whole Web Sites folder in IIS. This would only apply if you were hosting multiple sites and had a site you didn't want scripts to run on.

Tom 13-Feb-2006 09:54

On this page and the FAQ they point out that to reset the Windows PATH variable to include your php dir, you need to completely restart the machine.

If you can't afford to do that (installing on a live server for example), you can use the setx.exe tool from the Windows Resource Kit (google it). Like so:

c:\pathtoresourcekit> setx.exe PATH "%PATH%;c:\php" \m

Windows Server 2003 (x64 bits) + IIS 6.0 31-Jan-2006 03:16

1. Add new extension (.php)

    * Expand the local computer in the left pane    * Right-click on "Web Sites" in the left pane, then click "Properties" in the menu that pops up    * Flip top the "Home Directory" tab

Page 36: IIs-PHP

    * Click "Configuration"    * Flip to the "Mappings" tab    * Click "Add..."    * Enter the full path to php5isapi.dll in the "Executable" textbox (Browse... to find it more easily if you need to)    * Enter ".php" in the "Extension" textbox    * Select radial button "Limit to", enter "GET,POST,HEAD"    * Click "OK" all the way out

2. Verify php5isapi.dll is allowed

You must verify that the versions of php5isapi.dll that you want to use are allowed.

   2.1. In Internet Information Services (IIS) Manager, in the left-hand column, click the Web Services Extensions node and verify php5isapi.dll is allowed and all other Web Service Extensions are prohibited.   2.2. If the version of php5isapi.dll that you want to use does not appear in the list, follow the instructions to enable it and then repeat this procedure:

Go into IISBelow all of the websites is a folder: Web Service ExtensionsIn blue, to the lower left, is a choice: Add A New Web Service ExtensionAdd PHP/PHP5ISAPI.dllChoose To ALLOW it.

   2.3 If the version of php5isapi.dll you want to use appears on the list but is not allowed, right click the version of php5isapi.dll you want to allow and click Allow.

3. Configuring IIS for 32-Bit Emulation Mode (THIS IS MOST IMPORTANT!!!!)

3.1. If you are installing IIS on x64-based editions of Windows Server 2003 or Windows Server 2003 R2, IIS must be configured to run in 32 bit emulation mode. Perform the following procedure on each front-end Web server running an x64-based edition of Windows Server 2003.Configure Internet Information Services (IIS) for 32-bit mode

   1. Click Start, and then click Run.   2. In the Open box, type cmd, and then click OK.   3. In the command prompt window, navigate to the %drive%:\Inetpub\Adminscripts folder, where %drive% is the drive in which Windows Server 2003 is installed.   4. In the Adminscripts folder, type the following command:

      cscript adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1

      Note  The value "1" for Enable32bitAppOnWin64 specifies 32-bit

Page 37: IIs-PHP

mode, whereas the value "0" specifies 64-bit mode.   5. Press ENTER.   6. Type iisreset and then press ENTER.   7. Close the command prompt window.   8. Re-star System.

Note  The Run WWW service in IIS 5.0 isolation mode check box is only selected if you have upgraded to IIS 6.0 on Windows Server 2003 from IIS 5.0 on Windows 2000. New installations of IIS 6.0 use IIS 6.0 worker process isolation mode by default.

patatraboum at nospam dot com 26-Dec-2005 06:09

IIS + PHP

- The browser can't find your php code like localhost/dir/dir_code.php from any virtual directory (404 error)- You are sure the code existsYou may rename it with a .html extension and check if it displays- Process of your php code like localhost/root_code.php is ok from the root directory

It may come from the doc_root directive in php.ini whitch should be set to blank :

doc_root =

Then restart IIS to reload php.ini

some dude @ some place 04-Nov-2005 08:57

on two recent installation attempts on iis6 on win2k3 i followed the php manual and windows configuration steps exactly and php would still not run.

on the first install i had to give the USER account (not IUSR) read execute permissions to this file, c:\php\sapi\php4isapi.dll. using filemon i saw that it was being accessed and access was denied.

steps:- right click on this file > properties > security > add > location (select the server -not domain if listed) > advanced > find now > Users (usually the last item) > click OK- select Read & Execute > apply

also a complete computer restart was required in each install

Bill dot Rook at Gmail dot com 18-Sep-2005 10:09

doc_root = ".;c:\inetpub\wwwroot" does seem to work with virtual websites. This might be a better option then commenting out the line.

Jason 09-Sep-2005 04:54

Page 38: IIs-PHP

For me atleast, the steps for installing php 5 on IIS 6 on windows 2003 seemed to get buried with the other setups. I found it difficult to quickly look through and make sure I covered every step. So I created a clean step by step tutorial with screenshots:http://psdforums.com/article.php?a=9

atomictaco at atomic-taco dot com 10-Jul-2005 09:17

In response to phpmanual at pbb dot dds dot nl:

You are absolutly correct.  I found this out while trying to install PHP4 with Apache2 on XPPro.  Here are 3 general guidelines that I have found to be correct:

- Path may not have spaces.  Change C:\Program Files to C:\Progra~1  If you don't understand this, go to start-->run-->command (not cmd).  Type cd\ and hit enter.  Then type dir.  You should see all your directory names there.

- Paths should not be enclosed by quotes.

- Use forward slashes (/) and not backslashes (\)

thierry dot bo at nxextxcxoxuxrxrxixexr dot com 20-Dec-2004 04:50

With PHP 4.3.x and apache 1.3.x on windows, PHPRC is used only if php is installed as cgi. With module, no matter using setenv in httpd.conf or PHPRC as windows environment variable, it is not used.

cpz at akik-ffm dot de 19-Dec-2004 10:24

In the above, "the web server's directory" means the directory where the server executable lives, for example for the Apache installation on my XP box this is "\program files\apache group\apache2\bin" and NOT just "\program files\apache group\apache2".

But it's probably best to tell your web server where PHP's ini file is stored, for example via PHPIniDir for Apache's http.conf.

chuacheehow at gmail dot com 08-Oct-2004 05:55

My experience with IIS 5.1 is that the doc_root directive be commented in order for virtual directories to recognise PHP files (with PHP installed as CGI).

phpmanual at pbb dot dds dot nl 07-Oct-2004 06:29

Okay, I'm a total newbie to this, so my findings may be wrong, but this is what I found out.

The manual says "do not have spaces in the path (like C:\Program Files\PHP) as some web servers will crash if you do". Indeed, when using this with PHP5 on WinXP, I got the error message "The specified module could not be found."However, the problem seems not to lie in the SPACE in the pathname,

Page 39: IIs-PHP

but in the QUOTES that Windows adds when a space is in the pathname! This is what I found:

"C:\Program Files\php5\php5isapi.dll" -- doesn't workC:\php5\php5isapi.dll -- works"C:\php5\php5isapi.dll" -- doesn't workC:\Progra~1\php5\php5isapi.dll -- works"C:\Progra~1\php5\php5isapi.dll" -- doesn't workC:\Program Files\php5\php5isapi.dll -- doesn't work, because it's not accepted by Internet Information Services

I don't know if this all is a problem with Internet Information Services or with PHP, but it would be nice if it was more documented in the PHP manual.

php dot user dot com 29-Aug-2004 01:43

After having the same problem as specifed below with "No input file specified". I changed the doc_root as mentioned.

This is fine if all php scripts are going to be run from the c:\inetpub\wwwroot directory. To enable it for multiple websites where the root directories are all different simply leave the doc_root attribute in the php.ini file blank.

This is for the isapi version not cgi implementation. It also means you don't have to set IUSR or IWAM access to the PHP root directory.