Créer la base de donnée

la base de donnée sera nommée sc3enun8721_i9devis

on peut donner le meme nom à la base et à l'utilisateur de la base.

 

 

Copier les fichiers de votre application code igniter 4 qui fonctionne en localhost sur le serveur o2switch avec filezilla 

modifier le .htaccess à la racine

 # To prevent access to .env and other files
<Files .*>
# Apache 2.2
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
# Apache 2.4
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</Files>

modifier le .htaccess dans public

# Disable directory browsing
Options -Indexes

# ----------------------------------------------------------------------
# Rewrite engine
# ----------------------------------------------------------------------

# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>
	Options +FollowSymlinks
	RewriteEngine On

	# If you installed CodeIgniter in a subfolder, you will need to
	# change the following line to match the subfolder you need.
	# http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
	# RewriteBase /

	# Redirect Trailing Slashes...
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteCond %{REQUEST_URI} (.+)/$
	RewriteRule ^ %1 [L,R=301]

	# Rewrite "www.example.com -> example.com"
	RewriteCond %{HTTPS} !=on
	RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
	RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

	# Checks to see if the user is attempting to access a valid file,
	# such as an image or css document, if this isn't true it sends the
	# request to the front controller, index.php
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ^([\s\S]*)$ index.php/$1 [L,NC,QSA]

	# Ensure Authorization header is passed along
	RewriteCond %{HTTP:Authorization} .
	RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

<IfModule !mod_rewrite.c>
	# If we don't have mod_rewrite installed, all 404's
	# can be sent to index.php, and everything works as normal.
	ErrorDocument 404 index.php
</IfModule>

# Disable server signature start
	ServerSignature Off
# Disable server signature end

 

modifier le fichier database pour mettre à jour le nom de la abse de donnée et le mot de passe. 

Il faut également précisser le port 

localhost est la bonne config pour o2switch

<?php

// Déclaration de l'espace de noms (namespace) Config pour la classe Database
namespace Config;

// Utilisation de la classe Config pour étendre la configuration de la base de données
use CodeIgniter\Database\Config;

// Déclaration de la classe Database qui hérite de la classe Config
class Database extends Config
{
    // Chemin vers les fichiers de migration et de semence de la base de données
    public string $filesPath = APPPATH . 'Database' . DIRECTORY_SEPARATOR;

    // Groupe par défaut pour la configuration de la base de données
    
    public string $defaultGroup = 'default';
    //public string $defaultGroup = 'O2switch';

    // Configuration par défaut de la base de données 
    // LES DONNEES SONT TRANSMISES DANS LE FICHIER .env
    public array $default = [
        'DSN'          => '',            // Chaîne de connexion (DSN) (non utilisée dans cet exemple)
        'hostname'     => 'localhost',   // Adresse du serveur de base de données
        'username'     => 'sc3enun8721_i9devis',        // Nom d'utilisateur de la base de données
        'password'     => '[210Sa-pSW',            // Mot de passe de la base de données
        'database'     => 'sc3enun8721_i9devis', // Nom de la base de données
        'DBDriver'     => 'MySQLi',      // Pilote de la base de données (MySQLi dans cet exemple)
        'DBPrefix'     => 'c3',          // Préfixe des tables de la base de données
        'pConnect'     => false,         // Connexion persistante (désactivée dans cet exemple)
        'DBDebug'      => true,          // Mode débogage activé
        'charset'      => 'utf8',        // Encodage des caractères
        'DBCollat'     => 'utf8_general_ci', // Collation de la base de données
        'swapPre'      => '',            // Préfixe de remplacement (non utilisé dans cet exemple)
        'encrypt'      => false,         // Chiffrement (désactivé dans cet exemple)
        'compress'     => false,         // Compression (désactivée dans cet exemple)
        'strictOn'     => false,         // Mode strict (désactivé dans cet exemple)
        'failover'     => [],            // Serveurs de basculement en cas d'échec de connexion
        'port'         => 3306,      // Port du serveur de base de données
        'numberNative' => false,         // Utilisation de fonctions natives pour les nombres (désactivée dans cet exemple)
    ];

    // Configuration de la base de données pour les tests
    public array $tests = [
        'DSN'         => '',            // Chaîne de connexion (DSN) pour les tests (non utilisée dans cet exemple)
        'hostname'    => '127.0.0.1',    // Adresse du serveur de base de données pour les tests
        'username'    => '',            // Nom d'utilisateur de la base de données pour les tests
        'password'    => '',            // Mot de passe de la base de données pour les tests
        'database'    => ':memory:',     // Base de données en mémoire pour les tests
        'DBDriver'    => 'SQLite3',      // Pilote de la base de données pour les tests (SQLite3 dans cet exemple)
        'DBPrefix'    => '_db',     // Préfixe des tables de la base de données pour les tests
        'pConnect'    => false,         // Connexion persistante (désactivée dans cet exemple)
        'DBDebug'     => true,          // Mode débogage activé pour les tests
        'charset'     => 'utf8',        // Encodage des caractères pour les tests
        'DBCollat'    => 'utf8_general_ci', // Collation de la base de données pour les tests
        'swapPre'     => '',            // Préfixe de remplacement (non utilisé dans cet exemple)
        'encrypt'     => false,         // Chiffrement (désactivé dans cet exemple)
        'compress'    => false,         // Compression (désactivée dans cet exemple)
        'strictOn'    => false,         // Mode strict (désactivé dans cet exemple)
        'failover'    => [],            // Serveurs de basculement en cas d'échec de connexion pour les tests
        'port'        => 3306,          // Port du serveur de base de données pour les tests
        'foreignKeys' => true,          // Activation des clés étrangères pour les tests
        'busyTimeout' => 1000,          // Temps d'attente en cas de surcharge (millisecondes) pour les tests
    ];

    // Constructeur de la classe Database
    public function __construct()
    {
        // Appel du constructeur de la classe parente Config
        parent::__construct();

        // Si l'environnement est défini comme 'testing', utilise le groupe de configuration 'tests'
        if (ENVIRONMENT === 'testing') {
            $this->defaultGroup = 'tests';
        }
    }
}
Créer le sous domaine

Pour code Igniter 4 le sous domaine doit pointer  vers le repertoire public afin que les routes fonctionnent.

Attention les propositions de automatique de o2switch ne sont pas bonne.

 

Ouvrir le terminal

Si vous avez récupérer votre projet à partir de github. Il vous faudra éxécuter des commandes dans un terminal pour installer code igniter 4 correctement.

ouvrez le terminal de O2switch. Si celui-ci n'est pas présent , il faut contacter le support pour qu'il l'ajoute dans votre environement O2switch.

Créer le composer.phar

Pour que composer fonctionne. Vous devez générer le fichier executable php composer.phar à la racine de l'hébergement de votre site.

https://getcomposer.org/download/

Il faut executer ces lignes de commande. la deuxième n'est pas obligatoire. elle vérifie que le fichier n'est pas comrompu. Comme dans le teminal de O2switch , il le copier coller ne fonctionne pas la deuxième ligne à taper à la amin serait un cauchemar...

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

aller dans le bon repertoire ou ce trouve votre code codeigniter 4

Lorsque vous déployez sur votre serveur de production, n'oubliez pas d'exécuter la commande suivante :

composer install --no-dev

La commande ci-dessus supprimera les packages Composer uniquement pour le développement qui ne sont pas nécessaires dans l'environnement de production. Cela réduira considérablement la taille du dossier du fournisseur.

Chaque fois qu'il y a une nouvelle version, depuis la ligne de commande à la racine de votre projet :

composer update

Installation

Développez votre application dans le app dossier et le public dossier sera la racine de votre document.

À la racine de votre projet :

composer require codeigniter4/framework
 
Modifier app.php

vous devez changer $baseUrl comme cela

public string $baseURL = 'http://devis2.xavierbouquin.sc3enun8721.universe.wf/';

Attention la condition est que votre sous domaine soit dirigé directement dans le dossier public de votre projet pour que les routes fonctionnent  correctement

<?php

namespace Config;

use CodeIgniter\Config\BaseConfig;

class App extends BaseConfig
{
    /**
     * --------------------------------------------------------------------------
     * Base Site URL
     * --------------------------------------------------------------------------
     *
     * URL to your CodeIgniter root. Typically, this will be your base URL,
     * WITH a trailing slash:
     *
     *    http://example.com/
     */

    public string $baseURL = 'http://devis2.xavierbouquin.sc3enun8721.universe.wf/';
 
Exemple de fichier de migration codeigniter 

 2024_02_27_000004_create_items_table.php

 
<?php

namespace App\Database\Migrations;

use CodeIgniter\Database\Migration;

class CreateItemsTable extends Migration
{
    public function up()
    {
        $this->forge->addField([
            'id' => [
                'type' => 'INT',
                'constraint' => 5,
                'unsigned' => true,
                'auto_increment' => true,
            ],
            'description' => [
                'type' => 'TEXT',
            ],
            'price' => [
                'type' => 'DECIMAL',
                'constraint' => '10,2',
            ],
            'created_at' => [
                'type' => 'DATETIME',
                'null' => true,
            ],
            'updated_at' => [
                'type' => 'DATETIME',
                'null' => true,
            ],
            'deleted_at' => [
                'type' => 'DATETIME',
                'null' => true,
            ],
        ]);
        $this->forge->addKey('id', true);
        $this->forge->createTable('items');
    }

    public function down()
    {
        $this->forge->dropTable('items');
    }
}
 
Chaque modèle de votre base de ddonnées doit avoir un fichier de migration.
 
Migration de la base de données
Pour migrer votre base de données: php spark migrate

 

 

 

Modifié le: vendredi 22 mars 2024, 09:23