Composer è uno strumento che ti permette di organizzare al meglio le dipendenze utilizzate dai tuoi progetti sviluppati in PHP. Oltre a installare facilmente librerie di terze parti, Composer dispone di diversi comandi per verificare e installare eventuali aggiornamenti, rimuovere dipendenze non necessarie e molto altro.
In questo tutorial vedremo come creare un nuovo progetto tramite Composer, installare la libreria monolog come dipendenza, e verificare il suo corretto funzionamento sul tuo server CentOS 8.
Per iniziare dovrai connetterti al tuo server tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.
Installazione di Apache con supporto per PHP
Per poter utilizzare PHP e Composer hai bisogno innanzitutto di installare Apache con supporto per PHP sul tuo server.
Procedi aggiornando i pacchetti del sistema tramite:
yum install update -y
Quindi installa e avvia Apache tramite i comandi:
yum install httpd -y
systemctl start httpd.service
Al completamento delle operazioni, visitando l’indirizzo IP della tua macchina tramite un browser, dovresti visualizzare quanto segue:
http://[INDIRIZZO_IP_SERVER]/

Se tutto funziona correttamente, puoi procedere all’installazione del pacchetto PHP:
yum install php -y
Riavvia quindi il servizio Apache:
systemctl restart httpd.service
Dopo aver completato l'installazione, puoi verificarne il corretto funzionamento creando un file “test.php” nella directory root di Apache:
echo "" >> /var/www/html/index.php
Visitando il tuo server al suo indirizzo IP dovresti ora visualizzare la pagina di conferma della versione di PHP installata:

Installazione di Composer
Per prima cosa spostati nella directory principale del web server Apache:
cd /var/www/html/
Procedi quindi con l’installazione di Composer attraverso i seguenti comandi:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Nel caso dovessi riscontrare qualche problema, ti consigliamo di seguire le istruzioni presenti sul sito ufficiale di Composer.
Se l’installazione è andata a buon fine dovresti trovare nella directory un nuovo file chiamato composer.phar:
ls -lt
-rwxr-xr-x. 1 root root 1994167 Aug 27 06:40 composer.phar
-rw-r--r--. 1 root root 20 Aug 27 06:21 index.php
A questo punto potresti iniziare a utilizzare Composer richiamandolo attraverso PHP, ad esempio:
php composer.phar -v
In questa guida proseguiamo invece a installarlo a livello globale, digitando:
mv composer.phar /usr/local/bin/composer
In questo modo puoi richiamarlo più facilmente attraverso il comando:
composer -v
Creazione di un progetto con Composer
Procedi creando un progetto base per la tua applicazione, lanciando questo comando all’interno della directory /var/www/html :
composer init
Ti verranno richieste una serie di informazioni, come ad esempio il nome e l’autore del progetto:
Package name (/) [root/root]: aruba/comp-test
Description []:
Author [, n to skip]: n
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []: project
License []:
In seguito Composer ti chiederà se desideri definire delle dipendenze direttamente in questa fase, per adesso rispondi negativamente:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
{
"name": "aruba/comp-test",
"type": "project",
"require": {}
}
Conferma quindi i dati appena inseriti:
Do you confirm generation [yes]? yes
Composer utilizzerà le informazioni appena inserite per preparare il file composer.json all’interno della cartella attuale. Questo file non solo contiene quanto scritto sopra, ma viene utilizzato per contenere diversi metadati del progetto e le sue dipendenze.
Utilizzo di una dipendenza
Per installare qualsiasi dipendenza basta utilizzare il comando “require” di Composer.
Tutte le librerie installate attraverso Composer verranno salvate all’interno della directory “vendor” del nostro progetto, e memorizzate all’interno del file composer.json.
In questo tutorial utilizzeremo monolog, una libreria in grado di gestire file di log. Per installarla ti basta lanciare il comando:
composer require monolog/monolog
Puoi quindi aggiornare il file “index.php” con il seguente listato:
<?php
// Richiama l’autoloading delle classi
require __DIR__ . '/vendor/autoload.php';
// Prepara un nuovo logger
$log = new Monolog\Logger('name');
// Crea il file di log “app.log” nella directory attuale
$log--->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
//Salva un testo di esempio:
$log->addWarning('Test monolog');
Salva il file appena modificato, ed eseguilo da riga di comando:
php index.php
Se tutto funziona correttamente troverai il nuovo file di log “app.log” nella directory:
cat app.log
[2020-08-27 12:09:35] name.WARNING: Test monolog [] []
Aggiunta del file composer.lock
Durante l’installazione di un progetto tramite il comando “install”, Composer controlla l’esistenza del file “composer.lock”.
Nel caso in cui il file non sia presente, vuol dire che si tratta di una prima installazione del progetto. In questo caso, Composer installerà tutte le dipendenze indicate dal file composer.json, con la loro ultima versione disponibile, nella cartella “vendor”.
Una volta completato, salverà tutti i numeri di versione di ogni singola dipendenza scaricata in un nuovo file composer.lock, in modo da permettere ad altre installazioni dello stesso progetto di utilizzare le stesse versioni con cui il progetto è stato creato.
Nel caso in cui invece il file sia già presente all’interno della directory attuale, Composer scaricherà le dipendenze specificate nel file composer.json, utilizzando però i numeri di versione indicati nel file composer.lock.
Qualora il tuo progetto dovesse utilizzare strumenti di revisione del software, ti consigliamo quindi di salvare all’interno del repository non solo il file composer.json, ma anche il file composer.lock indicato sopra.