Blog

  • Gestion de plusieurs BDD dans Laravel

    Dans certains contextes de projet, on a besoins d’avoir accès à plusieurs bases de données (au moins 2). Dans le contexte que j’ai pu avoir, il me fallait configurer 2 BDD. La première base était sur MySQL, et la deuxième sur PostgreSQL.

    Voici les différentes étapes que j’ai pu effectuer :

    La première étape est de définir les connexions de base de données dans le fichier de configuration config/database.php. Il faut ajouter une nouvelle connexion à la section connections du tableau de configuration. Par exemple :

    Configuration des 2 bases de données.

    Ensuite, il faut définir les variables d’environnement pour la deuxième base de données dans le fichier .env :

    Variables d’environnement pour la deuxième base de données.

    A partir de là, on peut utiliser les méthodes du Query Builder pour spécifier la connexion qu’on souhaite utiliser :

    Query Builder connexion

    L’étape suivante et de pouvoir effectuer les migrations des tables vers la deuxième base de données dans Laravel, il suffit de spécifier la connexion à utiliser lors de l’exécution des migrations. Il faut tout d’abord créer une migration Laravel.
    Voici la commande :

    commande de migration Laravel

    Dans le fichier de migration généré, on spécifie la connexion à utiliser :

    Migration Laravel avec une connexion BDD.

    4. Ensuite, vous pouvez exécuter vos migrations comme d’habitude :

    Commande Laravel pour les migrations.

    Cela créera la table test dans votre base de données PostgreSQL.
    Notez que si vous voulez exécuter toutes les migrations sur la deuxième base de données, vous pouvez utiliser la commande suivante :

    Commande Laravel pour les migrations, avec choix de la base de données.

    Cela exécutera toutes les migrations disponibles sur la connexion pgsql.

    Et voilà. Qu’en avez-vous penser ?

  • Tips Laravel : Comment vider le cache

    Vider le cache sur Laravel

    Travaillant depuis quelques mois sur le framework Laravel, j’ai trouvé tips qui me permettent de gagner du temps sur ce Framework.

    Par exemple, pour le cas du cache, j’ai pu créer un process Makefile qui se défini comme ceci :

    Commande de cache sur Laravel.

    La commande make cache permet de vider le cache du navigateur, des routes et de la configuration.
    Le make dump permet de régénérer le fichier d’autoload de composer.

    De temps en temps, on peut avoir ce genre d’erreur lors d’un cache:clear.

    Erreur lors d'un cache clear sur Laravel.

    Pour corriger l’erreur, il faut suivre ces étapes :

    • supprimer le dossier du cache (storage/framework/cache/data).
    • Le recréer.
    • Lui donner les bons droits (sudo chmod -R 777 storage/framework/cache/*)
    • Refaire un make cache.

    L’erreur à normalement disparu, et le cache est supprimé normalement

  • L’essentiel de l’audit des packages avec Composer

    J’ai beau connaître composer depuis quelques années, j’en apprend encore aujourd’hui.

    Composer, l’outil de gestion de dépendances PHP, a introduit une fonctionnalité essentielle pour la sécurité : l’audit des packages. Dans cet article, nous explorerons en détail ce qu’est l’audit des packages, comment l’utiliser et pourquoi il est crucial pour la sécurité de vos projets.

    Qu’est-ce que l’audit des packages ?

    L’audit des packages est un processus qui permet de détecter les vulnérabilités de sécurité dans les dépendances de votre projet. Lorsque vous utilisez des packages tiers (comme des bibliothèques ou des frameworks), il est essentiel de s’assurer qu’ils ne contiennent pas de failles de sécurité connues. C’est là que l’audit des packages entre en jeu.

    Comment fonctionne l’audit des packages avec Composer ?

    • Vérification automatique lors de l’installation et de la mise à jour :
      • Depuis Composer 2.4, chaque fois que vous installez ou mettez à jour un package, Composer vérifie automatiquement les versions installées et les nouvelles versions à la recherche de vulnérabilités connues.
      • Si une version vulnérable est détectée, Composer affiche un avertissement.
    • Commande composer audit :
      • La commande composer audit vous permet de lister les vulnérabilités de sécurité signalées pour les versions actuellement installées des packages.
      • Elle affiche les informations suivantes :
        • Nom du package
        • Identifiant CVE
        • Titre de l’avis de sécurité
        • Lien vers l’avis de sécurité
        • Plage(s) de versions affectées
        • Date de publication de l’avis
    Exemple de Composer audit d'un projet existant
    • Formats de sortie personnalisables :
      • Vous pouvez spécifier le format de sortie pour les vulnérabilités détectées en utilisant l’option --audit-format.
      • Formats pris en charge : table, plain, json et summary.
    • Utilisation en CI/CD :
      • Les pipelines CI/CD peuvent exécuter composer audit pour s’assurer qu’il n’y a pas de vulnérabilités connues avant de déployer l’application.

    Exemple d’utilisation

    Supposons que vous souhaitiez installer une version vulnérable de Guzzle (par exemple, la version 7.4.4). Voici comment Composer réagit :

    Message de prévention lors d'un composer require.

    Composer installe le package, mais affiche un avertissement concernant la vulnérabilité détectée.

    Conclusion

    L’audit des packages avec Composer est un outil puissant pour renforcer la sécurité de vos projets PHP. Utilisez-le régulièrement pour vous assurer que vos dépendances sont à l’abri des vulnérabilités connues. Voici quelques conseils pour une utilisation efficace :

    1. Mettez à jour vos packages : Lorsqu’une vulnérabilité est corrigée dans une nouvelle version d’un package, assurez-vous de mettre à jour votre projet pour bénéficier de la correction.
    2. Surveillez les alertes de sécurité : Abonnez-vous aux notifications de sécurité pour les packages que vous utilisez. Ainsi, vous serez informé rapidement des nouvelles vulnérabilités.
    3. Vérifiez les dépendances de vos dépendances : Les packages que vous installez peuvent eux-mêmes avoir des dépendances. Assurez-vous que ces dépendances sont également sécurisées.
    4. Utilisez des outils complémentaires : En plus de Composer, explorez d’autres outils d’analyse statique et dynamique pour renforcer la sécurité de votre code.

    En appliquant ces bonnes pratiques, vous contribuerez à protéger vos applications PHP contre les menaces potentielles. N’oubliez pas que la sécurité est l’affaire de tous, et chaque petit geste compte !

    Pour finir, voici le lien de la documentation de composer.

  • Maintenance du Code PHP : lib à utiliser

    L’amélioration et la maintenance du code PHP sont des aspects cruciaux du développement logiciel, visant à garantir la fiabilité, la performance et la pérennité des applications. Pour ce faire, l’utilisation de bibliothèques bien choisies joue un rôle essentiel. Ces librairies offrent des fonctionnalités prêtes à l’emploi, facilitant le développement, la gestion des dépendances, et assurant une base solide pour des mises à jour et des corrections efficaces. Opter pour des bonnes pratiques de codage, comme la modularité et la documentation claire, contribue également à simplifier la maintenance du code PHP sur le long terme.

    Comment maintenir des applications en PHP.

    Il existe librairies en PHP, qui aident à la maintenabilité du code en PHP en donnant les infos à améliorer. Ces librairies sont les suivantes : phploc, phpcs, phpmd, phpdd

    phploc, ou comment décortiquer la complexité du code PHP

    PHPLOC est un outil d’analyse statique pour les projets PHP, permettant de mesurer diverses métriques de code. Il fournit des informations détaillées sur la taille et la complexité d’un code source PHP, en comptant notamment le nombre de classes, de méthodes, de traits, de lignes de code, et d’autres indicateurs pertinents. Cet outil est souvent utilisé dans le processus d’évaluation de la qualité du code et peut aider les développeurs à comprendre la structure et la complexité de leur projet. En résumé, PHPLOC offre une vision quantitative des caractéristiques du code source PHP.

    $ php phploc.phar src
    phploc 8.0-dev by Sebastian Bergmann.
    
    Directories:                                        104
    Files:                                              856
    
    Lines of Code (LOC):                             67,955
    Comment Lines of Code (CLOC):                    19,533 (28.74%)
    Non-Comment Lines of Code (NCLOC):               48,422 (71.26%)
    Logical Lines of Code (LLOC):                    18,478 (27.19%)
    
    Classes or Traits                                   662
      Methods                                         3,389
        Cyclomatic Complexity
          Lowest                                       1.00
          Average                                      2.00
          Highest                                    156.00
    
    Functions                                           185
      Cyclomatic Complexity
        Lowest                                         1.00
        Average                                        1.00
        Highest                                        1.00

    Lien github : https://github.com/sebastianbergmann/phploc

    Respect des standards avec phpcs

    PHPCS, ou PHP CodeSniffer, est un outil d’analyse statique de code pour PHP. Il permet de détecter et de signaler les violations des normes de codage définies, telles que PSR-1, PSR-2, et des conventions personnalisées. PHPCS facilite ainsi le maintien de la cohérence et de la lisibilité du code au sein d’un projet PHP, en offrant des recommandations et des corrections automatisées pour s’assurer que le code respecte les standards établis. Cet outil est largement utilisé dans le processus de développement pour garantir une qualité uniforme du code. En résumé, PHPCS contribue à la conformité aux normes de codage et à l’amélioration de la qualité du code PHP.

    Comment utiliser phpcs ?

    Lien github : https://github.com/squizlabs/PHP_CodeSniffer

    Détection automatisée des mauvaises pratiques avec phpmd

    PHPMD, ou PHP Mess Detector, est un outil d’analyse statique de code conçu pour détecter les codes sources PHP potentiellement problématiques. Il se concentre principalement sur les aspects liés à la complexité du code, aux mauvaises pratiques de programmation, et à la détection des codes redondants. PHPMD propose des règles configurables pour identifier ces problèmes, offrant ainsi aux développeurs des suggestions pour améliorer la lisibilité, la maintenabilité et la performance de leur code. En somme, PHPMD est un outil précieux pour identifier et corriger des aspects critiques de la qualité du code PHP.

    Exemple d'utilisation de phpmd

    Lien Github : https://github.com/phpmd/phpmd

    Détection des dépréciations PHP avec phpdd

    PhpDeprecationDetector est un outil spécifique pour la détection des dépréciations dans le code source PHP. Il est conçu pour identifier les portions du code qui utilisent des fonctionnalités ou des méthodes PHP obsolètes, signalant ainsi les points où des mises à jour sont nécessaires pour maintenir la compatibilité avec les versions PHP les plus récentes. Cet outil aide les développeurs à anticiper les changements à venir dans les futures versions de PHP et à prendre des mesures proactives pour mettre à jour leur code en conséquence. En bref, PhpDeprecationDetector contribue à assurer la pérennité des applications PHP en signalant les éléments de code sujets à des modifications dans les versions futures de PHP.

    Exemple d'utilisation de PhpDeprecationDetector

    Conclusion

    En conclusion, l’utilisation synergique de ces librairies représente une approche holistique pour garantir la qualité, la lisibilité et la pérennité du code PHP. En intégrant ces outils dans le processus de développement, les développeurs peuvent non seulement identifier et corriger les problèmes existants, mais aussi anticiper les évolutions futures du langage, assurant ainsi une base solide et adaptative pour leurs applications. En adoptant cette approche complète, les équipes de développement sont mieux équipées pour créer des solutions logicielles robustes, évolutives et conformes aux normes de l’industrie.

    Ils existent bien d’autres librairies de ce style, et je ne manquerai pas d’en discuter, dans le futur.

  • Définition de PHP_VERSION_ID

    Définition de la constante PHP_VERSION_ID

    En PHP, la constante PHP_VERSION_ID est une constante pré-définie qui représente la version courante de PHP sous forme d’un nombre entier. Cela facilite les comparaisons de versions dans le code, car vous pouvez simplement comparer les valeurs numériques plutôt que de manipuler des chaînes de caractères.

    Le format de la valeur PHP_VERSION_ID est le suivant :

    PHP_VERSION_ID = MAJOR * 10000 + MINOR * 100 + RELEASE
    • MAJOR: Le numéro de version majeure de PHP (par exemple, 7 pour PHP 7.x.x).
    • MINOR: Le numéro de version mineure de PHP (par exemple, 4 pour PHP 7.4.x).
    • RELEASE: Le numéro de version de correction (patch) de PHP (par exemple, 3 pour PHP 7.4.3).

    Pour la valeur PHP_VERSION_ID égale à 50600, cela signifie que :

    • MAJOR est égal à 5 (car 50600 divise par 10000 est égal à 5).
    • MINOR est égal à 6 (car 50600 modulo 10000 divise par 100 est égal à 6).
    • RELEASE est égal à 0 (car 50600 modulo 100 est égal à 0).

    Donc, la valeur 50600 correspond à PHP 5.6.0. C’était la version majeure 5, la version mineure 6, et la version de correction (patch) 0 de PHP. Cependant, veuillez noter que cette version est assez ancienne et n’est plus maintenue ni prise en charge. Il est fortement recommandé de mettre à jour vers une version plus récente de PHP pour des raisons de sécurité et de performance. La dernière version stable de PHP au moment de mon dernier entraînement est la version 8.x.x.