Jérôme Cutrona

Version statique de l'intranet de Jérôme Cutrona - Rejoindre la version dynamique 🔒

Les exemples et corrections sont potentiellement non fonctionnels.

B.U.T. Informatique - IUT de Reims - Université de Reims

Installation de Composer

Navigation

Objectifs de la séance

  • Installer Composer
  • Modifier votre environnement de travail
  • Savoir mettre à jour Composer

Installation de Composer dans un environnement Linux

Vous allez apprendre à gérer les dépendances de vos projets en utilisant Composer. L'intérêt d'utiliser Composer est double : l'installation, la réinstallation ou la mise à jour d'un composant est simple et vous disposez des sources pour que votre IDE propose l'auto-complétion.

Vous allez installer Composer.

Travail à réaliser
  1. Ouvrez un terminal
  2. S'il n'existe pas, créez un répertoire « bin » dans votre répertoire d'accueil :
    mkdir ~/bin
  3. Placez-vous dans le répertoire « bin » votre répertoire d'accueil :
    cd ~/bin
  4. Rendez-vous sur le site de composer et exécutez les commandes permettant de le télécharger. Vous devriez désormais trouver le fichier « composer.phar » dans votre répertoire courant.
  5. Afin d'utiliser la version à jour de composer fraîchement téléchargée plutôt que celle installée sur votre poste de travail qui n'est plus à jour, vous allez renommer le fichier « composer.phar » en « composer ».
  6. Si vous ne l'avez pas déjà fait, ajoutez le répertoire « ~/bin » à la variable « PATH » en modifiant le fichier « ~/.bashrc » pour y insérer la ligne suivante :
    export PATH="$HOME/bin:$PATH"
  7. Si vous avez modifié le script shell « ~/.bashrc », rechargez-le dans votre environnement en passant la commande :
    source ~/.bashrc
  8. Vérifiez que la commande « composer » est bien localisée dans votre répertoire « $HOME/bin » :
    which composer
  9. Testez le bon fonctionnement de la commande « composer » en l'exécutant :
    composer --version

Installation de Composer dans un environnement Windows

Vous allez apprendre à gérer les dépendances de vos projets en utilisant Composer. L'intérêt d'utiliser Composer est double : l'installation, la réinstallation ou la mise à jour d'un composant est simple et vous disposez des sources pour que votre IDE propose l'auto-complétion.

Vous allez installer Composer dans votre environnement Windows.

Remarque importante

Composer nécessite un interpréteur PHP pour fonctionner. Si vous n'avez pas installé PHP sur Windows, référez-vous au tutoriel « Installation d'un environnement de développement PHP sur Windows »

Travail à réaliser
  1. Rendez-vous sur la page de téléchargement de Composer pour Windows
  2. Téléchargez « Composer-Setup.exe » et lancez-le
  3. Choisissez le mode d'installation multi-utilisateurs (vous devez être administrateur de l'ordinateur) Composer Windows setup
  4. Choisissez ensuite de conserver l'option de désinstallation de Composer Composer Windows setup
  5. Vérifiez le chemin de l'exécutable de PHP qui a été détecté Composer Windows setup
  6. Précisez le serveur mandataire à utiliser pour que Composer accède à internet Composer Windows setup
  7. Vérifiez vos choix et validez Composer Windows setup
  8. Testez le bon fonctionnement de Composer en l'exécutant dans une console Git Bash :
    composer --version
    Composer Windows version

Mise à jour de Composer

Une fois installé, Composer peut « s'auto-mettre à jour » :

composer self-update

Relocalisation du cache de Composer

Afin d'accélérer les installations futures et de limiter l'impact sur votre quota d'espace disque, nous allons relocaliser le cache de Composer dans le répertoire temporaire.

Information

Cette configuration est une nouvelle fois particulière à l'infrastructure de l'IUT. Ne faites pas de modification du répertoire de cache de Composer sur votre ordinateur personnel.

Travail à réaliser
  1. Videz le cache actuel avec la commande :
    composer clearcache
  2. Modifiez l'emplacement du cache avec la commande :
    composer config --global cache-dir /tmp/$USER/composer
  3. Vérifiez la bonne exécution de la commande précédente en affichant le contenu du fichier « $HOME/.config/composer/config.json » :
    cat $HOME/.config/composer/config.json
    {
        "config": {
            "cache-dir": "/tmp/votre_login/composer"}
    }

Résoudre le problème de limitation du nombre d'appels de l'API GitHub

Composer récupère une grande partie des paquets nécessaires à vos applications sur GitHub. Au-delà de 60 requêtes par heure, GitHub applique une limitation et les paquets ne peuvent plus être récupérés pour être installés. Cette limite est possiblement vite atteinte puisque l'ensemble des ordinateurs du département Informatique sont vus à travers la même adresse IP publique.

Si vous obtenez un message d'erreur lors d'une installation de paquets avec Composer, vous pouvez augmenter la limite à 5000 requêtes par heure, à condition de vous identifier lorsque vous utilisez Composer. Pour cela, vous devez :

  • disposer d'un compte GitHub
  • vous rendre sur la page de gestion des jetons personnels (token)
  • générer un nouveau jeton d'authentification en cliquant sur « Generate new token »
  • saisir le jeton dans l'un des deux cas suivants :
    • si vous êtes confronté au message d'erreur de limitation
    • en passant la commande
      composer --global config github-oauth.github.com YOUR_TOKEN

Votre jeton sera mémorisé dans le fichier « auth.json » présent dans le répertoire de configuration global de Composer. Ce répertoire est normalement :

  • « $HOME/.config/composer/ » sur Linux
  • « %USERPROFILE%\AppData\Roaming\Composer\ » sur Windows
Vous pouvez retrouver ce répertoire en passant la commande :
composer --global config home

Scripts « Composer » compatibles Windows et Linux

Composer permet de définir des scripts pour faciliter le lancement de certaines commandes comme le démarrage du serveur Web ou l'exécution des tests. Cependant, certaines formulations et habitudes ne sont pas fonctionnelles à la fois sur Linux et Windows. Afin de vous permettre de travailler aussi bien à l'IUT sur Linux que chez vous sur Windows, nous allons vous donner quelques éléments clés pour maximiser l'interopérabilité entre systèmes d'exploitation ou minimiser la duplication de fichier ou de code lorsque des formulations spécifiques sont nécessaires.

Lancement du serveur Web

Le serveur Web de développement est classiquement lancé avec la commande php -S …. La configuration de l'environnement de développement peut alors se faire par variables d'environnement, par exemple avec le script « run-server » qui déclencherait la commande shell Linux suivante :

APP_DIR="$PWD" php -d display_errors -d auto_prepend_file="$PWD/vendor/autoload.php" -S localhost:8080 -t public/

Son équivalent avec l'interpréteur cmd de Windows est alors :

set APP_DIR=%cd%
php -d display_errors -d auto_prepend_file=%cd%\vendor\autoload.php -S localhost:8080 -t public/

Il est impossible de trouver une formulation commune et il est donc indispensable de proposer deux scripts Composer différents. Il vous est donc proposé de créer un répertoire « bin » à la racine de votre projet, dans lequel vous placerez les fichiers de commandes qui seront lancés par les scripts Composer :

  • Pour Linux :
    • Fichier « bin/run-server.sh » contenant
      APP_DIR="$PWD" php -d display_errors -d auto_prepend_file="$PWD/vendor/autoload.php" -S localhost:8000 -t public/
    • Script Composer « run-server » donc la formulation complète dans « composer.json » est
              "run-server" : [
                  "Composer\\Config::disableProcessTimeout",
                  "bin/run-server.sh"
              ],
      Information

      N'oubliez pas de changer les droits des scripts shell Linux pour les rendre exécutables.

  • Pour Windows :
    • Fichier « bin\run-server.bat » contenant
      set APP_DIR=%cd%
      php -d display_errors -d auto_prepend_file="%cd%\vendor\autoload.php" -S localhost:8000 -t public/
    • Script Composer « run-server:win » donc la formulation complète dans « composer.json » est
              "run-server:win" : [
                  "Composer\\Config::disableProcessTimeout",
                  "bin/run-server.bat"
              ],

Exécution des tests d'acceptation Codeception

Codeception dispose de tests d'acceptation qui sont exécutés pour interroger un serveur Web fonctionnel. Il est possible de configurer l'extension « RunProcess » pour qu'elle lance automatiquement un serveur Web dédié avant d'exécuter les tests, cette configuration est alors réalisée dans le fichier de configuration de la suite de tests associée.

Sur le même principe que précédemment, un script sera disponible par système d'exploitation.

  • Pour Linux, fichier « bin/run-test-server.sh » contenant
    MYPDO_ENV=test APP_DIR="$PWD" php -d display_errors -d auto_prepend_file="$PWD/vendor/autoload.php" -S localhost:8000 -t public/
  • Pour Windows, fichier « bin\run-test-server.bat » contenant
    set MYPDO_ENV=test
    set APP_DIR=%cd%
    php -d display_errors -d auto_prepend_file="%cd%\vendor\autoload.php" -S localhost:8000 -t public/

Le fichier de configuration de la suite de tests est alors unique en exploitant l'astuce qui fait que le script Windows échouera sur Linux et inversement, et ce sans empêcher le lancement du serveur ou le bon déroulement des tests :

extensions:
    enabled:
        - Codeception\Extension\RunProcess:
            # Run server on Windows platform (won't start on Linux)
            0: bin\run-test-server.bat
            # Run server on Linux platform (won't start on Windows)
            1: bin/run-test-server.sh
            sleep: 1 # wait for php local web server to start

Si vous avez uniquement besoin de variables d'environnement pour vos scripts Composer

Les principe détaillé dans les parties précédentes est nécessaire car les scripts font usage du répertoire courant (« $PWD » sur Linux, « %cd% » sur Windows) dans la ligne de commande qui lance le serveur Web. Si vous avez uniquement besoin de définir des variables d'environnement simples (comme « MYPDO_ENV=test ») pour des commandes qui fonctionnement aussi bien sur Linux que sur Windows (la commande php, par exemple), vous pouvez utiliser la commande « @putenv » de Composer.

Description des scripts Composer

La commande composer run --list affiche l'ensemble des scripts Composer disponibles. Vous pouvez rendre cette liste plus accessible en donnant une description de chaque script.