Guide d’installation
Windows + IIS
Déploiement pas à pas sur Windows / Windows Server avec IIS, PHP 8.2 en
FastCGI et le routeur via URL Rewrite, à partir du paquet de l’application.
Prérequis
| Windows | 10 / 11 ou Windows Server 2019/2022 |
| IIS | avec le rôle CGI (FastCGI) et le module URL Rewrite |
| PHP | 8.2.x Non-Thread-Safe (NTS) x64 |
| Oracle Instant Client | 19c — paquet léger “Basic” (ou “Basic Light”), 64-bit |
| Le paquet de l’application | archive sw_pkg_*.zip (voir étape 5) |
1. Activer IIS et le rôle CGI
Via Fonctionnalites Windows (ou Gestionnaire de serveur) : activer Internet Information Services, et sous Fonctionnalites de développement d’applications, cocher CGI (active FastCGI). Installer ensuite le module URL Rewrite (téléchargeable depuis iis.net / Web Platform Installer).
:: En PowerShell (admin) — exemple Windows client
Enable-WindowsOptionalFeature -Online -FeatureName IIS-CGI -All
2. Installer PHP 8.2 (NTS) et activer les extensions
- Télécharger PHP 8.2.x Non-Thread-Safe x64 depuis windows.php.net.
- Extraire dans
C:\php-8.2\. - Copier
php.ini-productionversphp.iniet ajuster (mêmes extensions que ci-dessous) :
extension_dir = "C:/php-8.2/ext"
extension=sqlite3 ; base interne (SQLite natif, PAS pdo_sqlite)
extension=oci8_19 ; Oracle Instant Client 19c
extension=ldap
extension=openssl
extension=mbstring
extension=curl
extension=fileinfo
extension=gd
extension=intl
extension=zip
extension=sockets
extension=exif
default_charset = "UTF-8"
date.timezone = "Europe/Paris"
upload_max_filesize = 64M
post_max_size = 72M
memory_limit = 256M
; FastCGI : recycler le process regulierement
fastcgi.impersonate = 1
cgi.fix_pathinfo = 1
3. Installer le client léger Oracle (Instant Client)
- Télécharger Instant Client Basic 19c, 64-bit, depuis oracle.com.
- Extraire dans
C:\oracle\instantclient_19_25\. - Ajouter ce répertoire au PATH système, et installer le Visual C++ Redistributable requis.
- Redémarrer IIS pour que le PATH soit pris en compte :
iisreset.
4. Déclarer PHP dans IIS (FastCGI)
Dans le Gestionnaire IIS, au niveau du serveur, ouvrir Mappages de gestionnaires » Ajouter un mappage de module :
- Chemin de la demande :
*.php - Module :
FastCgiModule - Executable :
C:\php-8.2\php-cgi.exe - Nom :
PHP_via_FastCGI
Définir index.php comme Document par défaut du site.
5. Récupérer et déployer le paquet
- Télécharger le paquet depuis la page Téléchargement :
- CDN : librairies chargées depuis Internet (archive légère) ;
- Portable : librairies embarquées (aucun accès Internet requis à l’exécution).
- Extraire l’archive, par exemple dans
C:\inetpub\my-app\. - Créer un site IIS dont le chemin physique pointe sur le sous-dossier
C:\inetpub\my-app\mon-appli(la racine web).
Le paquet contient une base securite\database.sqlite minimale (sans secret). La clé securite\master.key et le schéma complet sont créés au premier accès. Compte par défaut : admin / admin123 (à changer immédiatement).
6. Routeur : web.config (URL Rewrite)
L’application utilise un routeur en frontal (l’équivalent du .htaccess Apache). Placer ce web.config dans C:\inetpub\my-app\mon-appli\ :
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<defaultDocument>
<files><add value="index.php" /></files>
</defaultDocument>
<rewrite>
<rules>
<!-- Front-controller Oracle : /oracle/* vers oracle/index.php -->
<rule name="Oracle" stopProcessing="true">
<match url="^oracle/(.+)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="oracle/index.php" appendQueryString="true" />
</rule>
<!-- Routeur principal : tout ce qui n'est pas un fichier/dossier reel -->
<rule name="FrontController" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
lib\, securite\ et log\ sont en dehors de la racine web (mon-appli\) : ils ne sont donc pas accessibles via HTTP.
7. Droits d’accès
Donner à l’identité du pool d’applications (par défaut IIS APPPOOL\<NomDuPool>, ou IIS_IUSRS) le droit de modification sur les deux dossiers inscriptibles, situés hors de la racine web :
C:\inetpub\my-app\securite\ ← base SQLite, master.key, wallets, sauvegardes
C:\inetpub\my-app\log\ ← journaux applicatifs
8. Démarrer et vérifier
:: Verifier les extensions PHP
C:\php-8.2\php.exe -m | findstr /i "oci8 sqlite3"
:: Redemarrer IIS apres les changements
iisreset
Ouvrir l’URL du site IIS dans un navigateur : l’application redirige vers la page de connexion. Se connecter avec le compte par défaut puis le modifier.
