• seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

Come installare Composer in una distribuzione linux Centos 8 e come utilizzarlo in un progetto PHP

di :: 19 ottobre 2020
Come installare Composer in una distribuzione linux Centos 8 e come utilizzarlo in un progetto PHP

Composer è un "dependency manager" cioè un gestore delle dipendenze per tutti i nostri progetti PHP, che si utilizza da linea di comando, ed è utilizzato da tutti i moderni framework PHP come Laravel, Symfony, Drupal e Magento 2.

Spesso un applicativo web PHP, per eseguire determinate funzioni, si appoggia a librerie che vanno incluse all'interno del proprio codice, e queste librerie potrebbero appoggiarsi, a loro volta, ad altre librerie!

Queste librerie, che chiamiamo "dipendenze", sviluppate da terze parti, sono disponibili sul repository packagist.org. Composer di occupa di gestire automaticamente queste dipendenze, e di scaricarle sulla base delle indicazioni che vengono fornite in uno specifico file di configurazione chiamato composer.json scritto in formato JSON.

Composer si occupa anche dell'autoloading delle classi.

Oggi vediamo come installare Composer in una distribuzione linux Centos 8 e come utilizzarlo in uno script PHP.

Installazione di PHP

Per prima cosa dobbiamo installare, tramite lo strumento yum (o dnf), il pacchetto php con alcune sue librerie, e wget.

# yum install php php-cli php-common php-json php-zip wget

Download Composer installer

Successivamente dobbiamo scaricare lo script di installazione di Composer.

Questo comando, tramite PHP, scarica un file chiamato "composer-setup.php" nel nostro server, e specificatamente nella directory di lavoro in cui ci troviamo

# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

Per sicurezza, verifichiamo l'integrità dei dati del file scaricato, confrontando l'hash del file scaricato con l'hash trovato nella pagina di Composer Public Keys / Signatures.

Per effettuare questo confronto scarichiamo, tramite lo strumento wget, questo hash dalla pagina Github di Composer e memorizziamolo in una variabile denominata HASH:

# HASH="$(wget -q -O - https://composer.github.io/installer.sig)"

Adesso finalmente possiamo comparare i due file e verificare che l'installer scaricato non sia danneggiato

# php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Se gli hash corrispondono, verrà visualizzato il seguente messaggio:

Installer verified

In caso contrario il messaggio sarà

Installer corrupt

Installazione di Composer globalmente

Per poter utilizzare Composer da qualcunque directory del server, andiamo ad installarlo nella directory "/usr/local/bin" con questo comando

# php composer-setup.php --install-dir=/usr/local/bin --filename=composer

Il risultato sarà

All settings correct for using Composer
Downloading...

Composer (version 1.10.15) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer

Verifica installazione di Composer

Per verificare la corretta installazione digitiamo

# composer -V

Come output vedrai la versione installata

Composer version 1.10.15 2020-10-13 15:59:09

Per consultare il manuale d'uso, digita semplicemente

# composer

ed il risultato sarà il seguente

   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.10.15 2020-10-13 15:59:09

Usage:
  command [options] [arguments]

Options:
  -h, --help                     Display this help message
  -q, --quiet                    Do not output any message
  -V, --version                  Display this application version
      --ansi                     Force ANSI output
      --no-ansi                  Disable ANSI output
  -n, --no-interaction           Do not ask any interactive question
      --profile                  Display timing and memory usage information
      --no-plugins               Whether to disable plugins.
  -d, --working-dir=WORKING-DIR  If specified, use the given directory as working directory.
      --no-cache                 Prevent use of the cache
  -v|vv|vvv, --verbose           Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  about                Shows the short information about Composer.
  archive              Creates an archive of this composer package.
  browse               Opens the package's repository URL or homepage in your browser.
  cc                   Clears composer's internal package cache.
  check-platform-reqs  Check that platform requirements are satisfied.
  clear-cache          Clears composer's internal package cache.
  clearcache           Clears composer's internal package cache.
  config               Sets config options.
  create-project       Creates new project from a package into given directory.
  depends              Shows which packages cause the given package to be installed.
  diagnose             Diagnoses the system to identify common errors.
  dump-autoload        Dumps the autoloader.
  dumpautoload         Dumps the autoloader.
  exec                 Executes a vendored binary/script.
  fund                 Discover how to help fund the maintenance of your dependencies.
  global               Allows running commands in the global composer dir ($COMPOSER_HOME).
  help                 Displays help for a command
  home                 Opens the package's repository URL or homepage in your browser.
  i                    Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
  info                 Shows information about packages.
  init                 Creates a basic composer.json file in current directory.
  install              Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.
  licenses             Shows information about licenses of dependencies.
  list                 Lists commands
  outdated             Shows a list of installed packages that have updates available, including their latest version.
  prohibits            Shows which packages prevent the given package from being installed.
  remove               Removes a package from the require or require-dev.
  require              Adds required packages to your composer.json and installs them.
  run                  Runs the scripts defined in composer.json.
  run-script           Runs the scripts defined in composer.json.
  search               Searches for packages.
  self-update          Updates composer.phar to the latest version.
  selfupdate           Updates composer.phar to the latest version.
  show                 Shows information about packages.
  status               Shows a list of locally modified packages.
  suggests             Shows package suggestions.
  u                    Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file.
  update               Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file.
  upgrade              Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file.
  validate             Validates a composer.json and composer.lock.
  why                  Shows which packages cause the given package to be installed.
  why-not              Shows which packages prevent the given package from being installed.

Primo utilizzo di Composer in PHP

Vediamo subito come utilizzare composer in uno script php che necessita della libreria "carbon" che serve a gestire, come vedremo tra poco, le date in PHP.

Creiamo una directory per il nostro progetto, ad esempio "miotest"

# mkdir mioTest

ed entriamoci dentro

# cd mioTest

Se accediamo al sito packagist.org e cerchiamo nella barra di ricerca il pacchetto carbon, come primo risultato troveremo

nesbot/carbon

I pacchetti generalmente hanno questo formato "nome vendor / nome pacchetto", dove il vendor è chi ha realizzato il pacchetto.

Nella directory "mioTest" chiediamo a composer di installare nel nostro progetto questo pacchetto nesbot/carbon.

composer require nesbot/carbon

Composer andrà ad installare Carbon e le sue dipendenze.

Using version ^1.39 for nesbot/carbon
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 4 installs, 0 updates, 0 removals
  - Installing kylekatarnls/update-helper (1.2.1): Downloading (100%)
  - Installing symfony/polyfill-mbstring (v1.18.1): Downloading (100%)
  - Installing symfony/translation (v2.8.52): Downloading (100%)
  - Installing nesbot/carbon (1.39.1): Downloading (100%)
symfony/polyfill-mbstring suggests installing ext-mbstring (For best performance)
symfony/translation suggests installing symfony/config
symfony/translation suggests installing symfony/yaml
symfony/translation suggests installing psr/log-implementation (To use logging capability in translator)
Writing lock file
Generating autoload files
Carbon 1 is deprecated, see how to migrate to Carbon 2.
https://carbon.nesbot.com/docs/#api-carbon-2
    You can run './vendor/bin/upgrade-carbon' to get help in updating carbon and other frameworks and libraries that depend on it.
2 packages you are using are looking for funding.
Use the `composer fund` command to find out more!

Nella directory "mioTest" verrà creato un file composer.json che serve a descrivere il nostro progetto PHP project, ed include tutte le dipendenze del nostro progetto

{
    "require": {
        "nesbot/carbon": "^1.39"
    }
}

Da questo momento, il nostro progetto saprà che per funzionare è necessaria questa libreria carbon.

Inoltre troverai un file composer.lock, che serve a identificare le versioni installate di ogni libreria.

E infine è stata creata la directory vendor che conterrà tutte le librerie e dipendenze.

Adesso creiamo all'interno della nostra directory, utilizzando il nostro editor preferito, un file chiamato "test.php" ed al suo interno inserisci questo codice

<?php

require __DIR__ . '/vendor/autoload.php';

use Carbon\Carbon;

printf("Now: %s", Carbon::now());

?>

Analizziamo il codice

  • Dopo l'apertura del tag php includiamo, con require, il file "vendor/autoload.php" che serve a caricare automaticamente tutte le librerie necessarie.
  • Successivamente, tramite la keyword use, andiamo a richiamare la classe Carbon
  • Infine, "stampiamo" l'ora corrente usando il metodo now di Carbon

Lanciamo lo script da riga di comando

# php test.php

L'output sarà la data in formato Y-m-d H:i:s

Now: 2020-10-15 13:35:42

Bene, la libreria funziona!

Se in futuro la libreria venisse aggiornata, puoi scaricare automaticamente gli aggiornamenti lanciando un update di composer

# composer update

Mentre per togliere una libreria lanciamo il remove di composer seguita dal nome del pacchetto

composer remove nesbot/carbon

Abbiamo così concluso la spiegazione. Hai imparato ad installare Composer su CentOS 8 e sarà utilissimo in tutti i tuoi progetti PHP.

Approfondimenti

 
pay per script

Hai bisogno di uno script PHP personalizzato, di una particolare configurazione su Linux, di una gestione dei tuoi server Linux, o di una consulenza per il tuo progetto?

 
 
 
x

ATTENZIONE