Guide d’installation
Installation depuis le paquet ZIP
De l’archive à la première connexion, sur Red Hat / Oracle Linux, Ubuntu / Debian
ou Windows — avec le détail des extensions PHP et de leur configuration.
Prérequis
| Système | RHEL / Oracle Linux 8-9 (Rocky, AlmaLinux), Ubuntu 22.04+ / Debian 12+, ou Windows 10 / Server 2016+ |
| PHP | 8.2 ou supérieur |
| Serveur web | Apache 2.4 (module PHP ou PHP-FPM). Nginx et IIS conviennent aussi — voir les guides dédiés en bas de page. |
| Base de données | Aucune à installer. L’application utilise SQLite, embarqué dans PHP. |
| Accès Internet | Facultatif à l’exécution si vous choisissez le paquet en mode Portable (voir étape 1) |
| Le paquet | archive sw_pkg_*.zip (voir étape 1) |
1. Obtenir le paquet
Le paquet d’installation est disponible en téléchargement sur la page Téléchargement de ce site. Choisir l’archive correspondant à votre besoin :
- CDN — les librairies JavaScript sont chargées depuis Internet. Archive légère, mais le poste qui consulte l’application doit avoir un accès Internet.
- Portable — les librairies sont embarquées. Archive plus lourde, aucun accès Internet requis à l’exécution. C’est le mode à retenir pour un réseau fermé.
L’archive sw_pkg_*.zip contient mon-appli\ (la racine web), lib\, docs\, et une base securite\database.sqlite minimale pré-remplie : titre, thème, URL des librairies. Elle ne contient aucun secret — ni mot de passe de base, ni clé de chiffrement.
2. Les extensions PHP
La liste ci-dessous est établie à partir du code de l’application. Elle distingue ce qui est indispensable de ce qui n’est requis que si vous activez tel module — inutile d’installer l’Oracle Instant Client, plusieurs centaines de Mo, sur un serveur qui ne verra jamais Oracle.
Socle indispensable — sans ces extensions, l’application ne démarre pas ou perd une fonction essentielle.
| sqlite3 | Base interne de l’application : utilisateurs, rôles, configuration, registre des bases. | Extension native SQLite3. Sur RHEL elle est fournie par php-common, sur Debian par php8.2-sqlite3. |
| sodium | Chiffrement au repos de tous les mots de passe stockés : bases Oracle et PostgreSQL, CMDB, compte de service LDAP, secret OAuth. | Aucun réglage. Incluse dans le cœur de PHP 8.2 sous Debian ; paquet php-sodium sous RHEL ; à décommenter sous Windows. |
| mbstring | Traitement des chaines UTF-8 : interface en sept langues, découpage des textes SQL et des aperçus de fichiers. | Aucun réglage particulier. |
| zip | Mise à jour d’un module par ZIP, export de module, génération du paquet, lecture des archives d’audit. | Aucun réglage particulier. |
| dom | Rendu du portail de documentation intégré (conversion Markdown vers HTML). | Paquet php-xml sous RHEL, php8.2-xml sous Debian. |
| fileinfo | Contrôle du type réel de tout fichier envoyé — archives d’audit, ZIP de module, logo. C’est ce qui empêche un fichier de mentir sur son extension. | Compilée par défaut sous Linux ; à décommenter sous Windows. |
| session json |
Sessions applicatives et échanges de données avec l’interface. | Compilées dans PHP 8 par défaut : rien à faire. |
| openssl | Transport chiffré : envoi de courriel en TLS ou SSL, annuaire en LDAPS. | Indispensable des que le SMTP est en TLS/SSL ou l’annuaire en LDAPS. Sans cela, seules les liaisons en clair fonctionnent. |
Selon les modules que vous activez — à n’installer que si le module correspondant vous sert.
| oci8 | Module Oracle, et les modules CMDB et CNP qui en dépendent. | Exige l’Oracle Instant Client 19c installé séparément, et les librairies déclarées au système (voir les étapes par plateforme). |
| pgsql | Module PostgreSQL. | Extension native pgsql, pas pdo_pgsql. Aucun client externe à installer. |
| ldap | Authentification LDAP / Active Directory, et module CNP. | Pour LDAPS, vérifier que les certificats de l’autorité sont connus du système. |
| gd | Logo et favicon personnalisés. | Facultative : sans elle, l’envoi d’images est simplement refusé, le reste fonctionne. |
| simplexml | Lecture des plans d’exécution Oracle détaillés (profils SQL, plans adaptatifs). | Même paquet que dom : php-xml ou php8.2-xml. |
| phar | Lecture des archives d’audit compressées en .tgz. |
Activée par défaut. phar.readonly = On n’empêche pas la lecture : ce réglage peut rester tel quel. |
| zlib | Compression des journaux par la rotation planifiée (scripts en ligne de commande). | Facultative : sans elle, les journaux tournent sans être compressés. |
pdo_sqlite ni pdo_pgsql. L’application n’utilise pas PDO, mais les extensions natives SQLite3 et pgsql. Installer PDO ne casse rien, mais n’apporte rien.
sodium, il n’y a pas de demi-mesure. Le chiffrement au repos refuse de fonctionner sans elle, et le message est explicite : PHP sodium extension required for at-rest encryption. Aucun mot de passe de base ne pourra être enregistré.
En revanche, curl, intl, exif, sockets, bz2, gmp, gettext et imap ne sont jamais utilisées par l’application, quels que soient les modules actives : les activer n’apporte rien. Certaines figurent encore dans d’anciennes procédures d’installation.
3. Les réglages php.ini
Ces valeurs conviennent à une instance courante. Chacune répond à un besoin précis de l’application.
; --- Encodage et fuseau ---
default_charset = "UTF-8" ; interface en sept langues
date.timezone = "Europe/Paris" ; horodatage des journaux et des rapports
; --- Envois de fichiers ---
; Depots d'archives d'audit, ZIP de mise a jour de module, wallets Oracle.
; post_max_size doit rester SUPERIEUR a upload_max_filesize : sinon l'envoi
; est rejete avant meme d'atteindre l'application, sans message utile.
upload_max_filesize = 64M
post_max_size = 72M
; --- Ressources ---
memory_limit = 256M ; rapports volumineux, lecture d'archives
max_execution_time = 300 ; collectes et exports longs
; --- Acces reseau sortant ---
; Requis pour l'authentification OAuth et pour la generation d'un paquet
; en mode Portable. L'application n'utilise pas curl : sans ce reglage,
; ces deux fonctions echouent silencieusement.
allow_url_fopen = On
; --- Sessions ---
session.use_strict_mode = 1
; Inutile de fixer ici gc_maxlifetime, cookie_httponly ni cookie_samesite :
; l'application les positionne elle-meme au demarrage de la session, a partir
; de son propre reglage de duree de vie.
; --- Journalisation ---
; L'application force deja display_errors a Off et log_errors a On.
; Ne renseigner ici que la destination du journal.
error_log = /var/log/php/error.log
Deux directives méritent une attention particulière, parce qu’elles cassent des fonctions sans message clair :
| open_basedir | Laisser vide, ou y inclure la racine du paquet et le répertoire temporaire du système. L’application écrit hors de la racine web (securite\, log\) et passe par le répertoire temporaire pour fabriquer les archives. |
| disable_functions | Y interdire exec et shell_exec désactive la page Batchs et ordonnancement, qui lit et écrit la crontab (ou les tâches planifiées Windows). Le reste de l’application n’en dépend pas. |
post_max_size qui est trop bas, ou une directive LimitRequestBody côté Apache.
4. Linux Red Hat / Oracle Linux
Valable pour RHEL 8 et 9, Oracle Linux, Rocky et AlmaLinux.
# Activer PHP 8.2 (RHEL 9 / OL 9)
sudo dnf module reset php
sudo dnf module enable php:8.2
# RHEL 8 : depot Remi, puis "sudo dnf module enable php:remi-8.2"
# Apache, PHP et le socle indispensable
sudo dnf install -y httpd php php-cli php-common \
php-mbstring php-sodium php-zip php-xml php-process
# Selon les modules que vous activez
sudo dnf install -y php-ldap php-gd php-pgsql
php-process fournit exec et shell_exec, dont la page Batchs à besoin pour écrire la crontab. fileinfo est compilée par défaut.
sqlite3 est fourni par php-common : il n’y a pas de paquet php-sqlite3 à installer sur RHEL.
Pour le module Oracle uniquement, ajouter l’Instant Client et compiler OCI8 :
sudo dnf install -y oracle-instantclient-basic oracle-instantclient-devel
# ou installer les RPM telecharges depuis oracle.com
# Declarer les librairies au linker
echo "/usr/lib/oracle/19.25/client64/lib" | \
sudo tee /etc/ld.so.conf.d/oracle-instantclient.conf
sudo ldconfig
# Compiler l'extension
sudo dnf install -y php-devel php-pear gcc make
sudo pecl install oci8-3.3.0
# au prompt : instantclient,/usr/lib/oracle/19.25/client64/lib
echo "extension=oci8.so" | sudo tee /etc/php.d/30-oci8.ini
SELinux étant actif par défaut, autoriser Apache à écrire dans les répertoires de travail de l’application :
sudo setsebool -P httpd_can_network_connect 1
sudo chown -R apache:apache /opt/app/securite /opt/app/log
sudo chmod 750 /opt/app/securite
sudo restorecon -R /opt/app
Puis passer à l’étape 7.
5. Linux Ubuntu / Debian
sudo apt update
# PHP 8.2 si la distribution ne le fournit pas
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:ondrej/php
sudo apt update
# Apache, PHP et le socle indispensable
sudo apt install -y apache2 libapache2-mod-php8.2 \
php8.2 php8.2-cli php8.2-mbstring php8.2-sqlite3 \
php8.2-zip php8.2-xml
# Selon les modules que vous activez
sudo apt install -y php8.2-ldap php8.2-gd php8.2-pgsql
sodium est incluse dans le cœur de PHP 8.2 sur Debian et Ubuntu : aucun paquet à installer, aucune ligne à ajouter.
Pour le module Oracle uniquement :
sudo apt install -y libaio1 unzip php8.2-dev php-pear gcc make
sudo mkdir -p /opt/oracle
sudo unzip instantclient-basic-linux.x64-19.25*.zip -d /opt/oracle
sudo unzip instantclient-sdk-linux.x64-19.25*.zip -d /opt/oracle
echo "/opt/oracle/instantclient_19_25" | \
sudo tee /etc/ld.so.conf.d/oracle-instantclient.conf
sudo ldconfig
sudo pecl install oci8-3.3.0
# au prompt : instantclient,/opt/oracle/instantclient_19_25
echo "extension=oci8.so" | sudo tee /etc/php/8.2/mods-available/oci8.ini
sudo phpenmod oci8
Droits sur les répertoires de travail :
sudo chown -R www-data:www-data /opt/app/securite /opt/app/log
sudo chmod 750 /opt/app/securite
Puis passer à l’étape 7.
6. Windows avec ppowa
L’installation Windows repose sur une arborescence portable : Apache et PHP côté à côté, sans installateur ni service système imposé.
C:\ppowa-64S\
├── httpd-2.4\ serveur Apache
│ └── conf\httpd.conf
├── php-8.2.17\ interpreteur PHP
│ ├── php.ini
│ ├── php8apache2_4.dll
│ └── ext\
└── my-app\ le paquet decompresse
├── mon-appli\ racine web (DocumentRoot)
├── lib\
├── securite\ hors racine web
└── log\ hors racine web
- Télécharger Apache 2.4 pour Windows (VS17 x64) depuis apachelounge.com et extraire dans
C:\ppowa-64S\httpd-2.4\. - Télécharger PHP 8.2.x Thread Safe x64 depuis windows.php.net et extraire dans
C:\ppowa-64S\php-8.2.17\. - Installer le Visual C++ Redistributable correspondant, requis par Apache comme par PHP.
- Copier
php.ini-productionversphp.iniet y ajouter les lignes ci-dessous, en plus des réglages de l’étape 3.
extension_dir = "C:/ppowa-64S/php-8.2.17/ext"
; Socle indispensable
extension=sqlite3
extension=sodium
extension=mbstring
extension=zip
extension=openssl
extension=xml
extension=fileinfo
; Selon les modules que vous activez
extension=oci8_19 ; module Oracle (Instant Client 19c requis)
extension=pgsql ; module PostgreSQL
extension=ldap ; authentification LDAP / Active Directory
extension=gd ; logo et favicon personnalises
Configurer Apache dans C:\ppowa-64S\httpd-2.4\conf\httpd.conf :
Define SRVROOT "C:/ppowa-64S/httpd-2.4"
ServerRoot "${SRVROOT}"
Listen 80
# Chargement de PHP comme module
PHPIniDir "C:/ppowa-64S/php-8.2.17"
AddHandler application/x-httpd-php .php
LoadModule php_module "C:/ppowa-64S/php-8.2.17/php8apache2_4.dll"
# Racine web = le sous-dossier mon-appli du paquet
DocumentRoot "C:/ppowa-64S/my-app/mon-appli"
<Directory "C:/ppowa-64S/my-app/mon-appli">
Options +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Pour le module Oracle uniquement : télécharger l’Instant Client Basic 19c 64-bit depuis oracle.com, l’extraire dans C:\oracle\instantclient_19_25\, et ajouter ce répertoire au PATH système.
7. Déployer le paquet
Transférer l’archive sur le serveur, puis l’extraire.
# Linux
scp sw_pkg_*_portable.zip user@serveur:/tmp/
sudo mkdir -p /opt/app
sudo unzip /tmp/sw_pkg_*_portable.zip -d /opt/app
# Windows : extraire dans C:\ppowa-64S\my-app\
La racine web est le sous-répertoire mon-appli, et lui seul. Les répertoires securite\ (base SQLite et clé de chiffrement) et log\ restent en dehors de la racine web : ils ne sont jamais accessibles par HTTP.
Sous Apache, la réécriture d’URL doit être active : vérifier que mod_rewrite est chargé et que AllowOverride All est bien posé sur le répertoire, sans quoi le fichier .htaccess livré avec l’application sera ignoré.
8. Première connexion
Démarrer le serveur web et ouvrir l’application dans un navigateur. Au premier accès, l’application crée le schéma complet de sa base et sa clé de chiffrement.
| Identifiant | admin |
| Mot de passe | admin123 |
| Première action | Changer ce mot de passe immédiatement. |
securite\master.key et securite\database.sqlite. La clé déchiffre les mots de passe contenus dans la base : sauvegarder l’une sans l’autre rend les secrets irrécupérables.
9. Vérifier l’installation
- La page de connexion s’affiche, feuilles de style comprises.
- Vous vous connectez et changez le mot de passe du compte
admin. - Dans Administration » Modules, activer les modules voulus. Un module dont l’extension PHP manque le signalera à l’activation.
- Déclarer une base et lancer un test de connexion : c’est la vérification la plus parlante, elle met à l’épreuve l’extension, le client et le réseau d’un seul coup.
- Vérifier que
log\app.logse remplit : si le fichier reste vide ou absent, les droits d’écriture sont à revoir.
En cas de page blanche, la réponse est dans le journal d’erreurs de PHP, pas dans le navigateur : display_errors est à Off en production.
