Windows + Apache

Installation guide

Windows + Apache

Step-by-step deployment on Windows 10/11 with Apache 2.4 and PHP 8.2
(loaded as an Apache module), from the package generated by the application.

Requirements

Windows 10 or 11 (64-bit)
Apache HTTPD 2.4.x — VS17 x64 binaries (apachelounge.com)
PHP 8.2.x Thread Safe (TS) x64
Oracle Instant Client 19c — lightweight “Basic” (or “Basic Light”) package, 64-bit
The application package sw_pkg_*.zip archive (see step 5)
Important: PHP must be the Thread Safe build because it is loaded as an Apache module (php8apache2_4.dll). For IIS, the Non-Thread-Safe build is the one to use (see the Windows + IIS guide).

1. Install Apache 2.4

  1. Download the Apache 2.4 binaries for Windows (VS17 x64) from apachelounge.com.
  2. Extract into C:\app\httpd-2.4\.
  3. Install the matching Visual C++ Redistributable (required by both Apache and PHP).

2. Install PHP 8.2 and enable the extensions

  1. Download PHP 8.2.x Thread Safe x64 from windows.php.net.
  2. Extract into C:\app\php-8.2\.
  3. Copy php.ini-production to php.ini and adjust:
; Extensions directory
extension_dir = "C:/app/php-8.2/ext"

; Extensions required by the application
extension=sqlite3        ; internal database (native SQLite, NOT pdo_sqlite)
extension=oci8_19        ; Oracle Instant Client 19c
extension=ldap           ; LDAP / Active Directory authentication
extension=openssl
extension=mbstring
extension=curl
extension=fileinfo
extension=gd
extension=intl
extension=zip
extension=sockets
extension=exif           ; must come after mbstring

; Encoding and time zone
default_charset = "UTF-8"
date.timezone = "Europe/Paris"

; Uploads (ZIP updates, Oracle wallets, logo)
upload_max_filesize = 64M
post_max_size = 72M
memory_limit = 256M
Do not enable pdo_sqlite: the application uses the native SQLite3 class (the sqlite3 extension).

3. Install the Oracle Instant Client

The Oracle module uses the OCI8 extension, which requires the Oracle Instant Client.

  1. Download Instant Client Basic (or Basic Light if you only use English) 19c, 64-bit, from oracle.com.
  2. Extract into C:\oracle\instantclient_19_25\.
  3. Add that folder to the Windows system PATH (Settings » Environment variables).
  4. Install the Visual C++ Redistributable required by the Instant Client (if not already present).
Tip: the PATH is only read when a process starts. Apache must be restarted after the PATH is changed so that OCI8 can find the Oracle DLLs.

4. Configure Apache

Edit C:\app\httpd-2.4\conf\httpd.conf:

Define SRVROOT "C:/app/httpd-2.4"
ServerRoot "${SRVROOT}"
Listen 80

# Load PHP (Apache module)
PHPIniDir "C:/app/php-8.2"
AddHandler application/x-httpd-php .php
LoadModule php_module "C:/app/php-8.2/php8apache2_4.dll"

# Web root = the mon-appli subfolder of the package
DocumentRoot "C:/app/my-app/mon-appli"
<Directory "C:/app/my-app/mon-appli">
    Options +FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>
AllowOverride All is essential: the application’s .htaccess file (router / mod_rewrite) must be taken into account. Check that mod_rewrite is loaded.

5. Get and deploy the package

The application is deployed from the downloaded archive:

  1. Download the package from the Download page, choosing the archive:
    • CDN: JS/CSS libraries are loaded from the Internet (small archive; the target server needs Internet access).
    • Portable: libraries are bundled into the archive (no Internet access required at runtime).
  2. Transfer the archive to the server and extract it into C:\app\my-app\.

The package holds mon-appli\ (web root), lib\, docs\ and a minimal securite\database.sqlite pre-filled with the title, theme and library URLs. It carries no secret:

  • the securite\master.key encryption key is generated automatically on first access;
  • the full schema (users, roles, Oracle databases…) is created by the migrations on first start;
  • default account: admin / admin123change it immediately.

6. Access rights

The account Apache runs under must be able to write into two folders (created automatically if missing), located outside the web root:

C:\app\my-app\securite\   ← SQLite database, master.key, wallets, backups
C:\app\my-app\log\        ← application logs

7. Start and check

:: Install Apache as a Windows service (optional)
C:\app\httpd-2.4\bin\httpd.exe -k install -n "Apache24"
net start Apache24

:: Check that PHP loads oci8 and sqlite3
C:\app\php-8.2\php.exe -m | findstr /i "oci8 sqlite3"

Open http://localhost/ in a browser: the application redirects to the login page. Log in with the default account, then change it.

You are ready. The SQLite database and the encryption key were created on first access. Then configure your Oracle databases, your users and authentication from the administration area.