Comment mettre en place le framework PHP CodeIgniter 4 sur son serveur web sous Apache 2.

Tout d'abord il faut télécharger la dernière version du framework.

Dans le terminal à la racine du projet :

wget https://github.com/codeigniter4/CodeIgniter4/archive/refs/tags/v4.3.7.zip 

unzip V4.3.7.zip

cd CodeIgniter4-4.3.7

mv * ../

Puis il faut déplacer les fichiers du dossier public à la racine :

cd public

mv * ../

Il faut ensuite donner les droits au serveur d'écrire dans le dossier writable et ses sous-dossier :

chmod -R 777 writable/

Puis modifié le fichier index.php que l'on vient de déplacer, il faut remplacer la ligne :

require FCPATH . '../app/Config/Paths.php';

par

require FCPATH . 'app/Config/Paths.php';

Une fois que cela est fait il faut renommer et modifier le fichier env :

mv env .env

Les modifications à apporter sont :

  • Définir l'environnement du projet (production, developement ou testing dans mon cas je met developement car cela permet d'afficher les erreurs PHP et de CodeIgniter durant le développement, il faudra penser à le passer en  production avant le déploiement)

    CI_ENVIRONMENT = development

 

  • Définir l'url de base du projet

     app_baseURL = 'https://mon-nom-de-domaine.fr'

 

  • Forcer l'utilisation du protocole HTTPS pour toutes les requêtes du projet

    app.forceGlobalSecureRequests = true
     

Puis il ne reste plus qu'à modifier le fichier App.php qui se situe dans le dossier Config :

  • Définir une nouvelle fois l'url de base du projet
    • public string $baseURL = 'https://mon-nom-de-domaine.fr';

  • Enlever le fichier d'index par défaut du projet (seulement si le serveur utilise mod_rewrite)

    • public string $indexPage = '';

  • Définir le nom des cookies de session

    •    public string $sessionCookieName = 'monprojet_session';

  • Définir le temps d'expiration d'une session en secondes (dans mon cas je le défini sur 604800 soit 7 jours)

    •    public int $sessionExpiration = 604800;



La mise en place du framework CodeIgniter 4 sous Apache2 est terminé.