How to Install and use PHP Composer on Debian 12

Composer is a dependency manager for the programming language, PHP. It functions as some sort of project manager that helps the programmer manage dependencies that will be used on a project-to-project basis.

Installing Composer on Debian 12

First, need to check for any pending system updates,

apt update

apt upgrade

Install the required packages.

apt install wget php-cli php-zip unzip

Download the composer installer file.

wget -O composer-setup.php https://getcomposer.org/installer

Output:

root@vps:~# wget -O composer-setup.php https://getcomposer.org/installer
--2023-06-13 20:51:32--  https://getcomposer.org/installer
Resolving getcomposer.org (getcomposer.org)... 142.44.245.229, 2607:5300:201:2100::4:d105
Connecting to getcomposer.org (getcomposer.org)|142.44.245.229|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 58140 (57K) [application/octet-stream]
Saving to: ‘composer-setup.php’

composer-setup.php                100%[=============================================================>]  56.78K  --.-KB/s    in 0.08s   

2023-06-13 20:51:32 (738 KB/s) - ‘composer-setup.php’ saved [58140/58140]

root@vps:~# 

To install Composer globally inside the /usr/local/bin directory by running the following command.

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

Output:

root@vps:~# php composer-setup.php --install-dir=/usr/local/bin --filename=composer
All settings correct for using Composer
Downloading...

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

root@vps:~# 

If a new Composer version is available, update the package by running the following command.

composer self-update 

Use Composer in PHP Project

mkdir ~/my-first-composer-project

cd ~/my-first-composer-project

Initialize a new composer.json and install the carbon package by running the following command.

composer require nesbot/carbon

Output:

root@vps:~/my-first-composer-project# composer require nesbot/carbon
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? yes
Info from https://repo.packagist.org: #StandWithUkraine
./composer.json has been created
Running composer update nesbot/carbon
Loading composer repositories with package information
Updating dependencies
Lock file operations: 5 installs, 0 updates, 0 removals
  - Locking nesbot/carbon (2.67.0)
  - Locking symfony/polyfill-mbstring (v1.27.0)
  - Locking symfony/polyfill-php80 (v1.27.0)
  - Locking symfony/translation (v6.3.0)
  - Locking symfony/translation-contracts (v3.3.0)
....

After the installation is complete, you can see that Composer created two files composer.json and composer.lock along with a vendor directory.

ls -l

Output:

root@vps:~/my-first-composer-project# ls -l
total 28
-rw-r--r-- 1 root root    60 Jun 13 20:55 composer.json
-rw-r--r-- 1 root root 16387 Jun 13 20:55 composer.lock
drwxr-xr-x 6 root root  4096 Jun 13 20:55 vendor
root@vps:~/my-first-composer-project# 

Create a new file named testing.php and paste the following content.

<?php

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

use Carbon\Carbon;

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

Run the script by running the following command.

php testing.php

Output:

root@vps:~/my-first-composer-project# php testing.php 
Now: 2023-06-13 20:58:35root@vps:~/my-first-composer-project# 

Next, if you want to update the package then you can use the following command.

composer update

Output:

root@vps:~/my-first-composer-project# composer update
Do not run Composer as root/super user! See https://getcomposer.org/root for details
Continue as root/super user [yes]? yes
Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.
Loading composer repositories with package information
Updating dependencies
Nothing to modify in lock file
Installing dependencies from lock file (including require-dev)
Nothing to install, update or remove
Generating autoload files
5 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found
root@vps:~/my-first-composer-project# 

Done!