Recently, I started a project which uses Composer as a dependency management system. In the spirit of reducing the dependencies on the host system, I wanted to bundle even Composer itself inside the project’s source code. This is possible by downloading and including a composer.phar at the root of the project.
What is composer.phar?
It’s basically a PHP script that contains the core functionality of Composer – namely, the ability to read a composer.json/composer.lock file (a JSON definition of the project’s dependencies) and manage those dependencies – download them, resolve them to the best possible version, lock them to a version, etc.
How to download composer.phar?
There are basically two main ways to download the composer.phar:
- Programmatically (easier)
- Manual (safer)
For my most recent project, I opted for the programmatical approach, which is documented on the Composer website.
Using that approach, you pretty much have to run a single command:
wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet
Note: The command above is up to date as of writing this but may change in the future. For the up to date version, go through the website link above.
Troubleshooting: Composer installation error on Ubuntu – “Failing Composer installation: Unable to write keys.dev.pub to: /home/$USER/.composer”
Occasionally, I stumble upon this error when I try to include Composer in a real life project. The error is kind of ambiguous, but the reason behind it is pretty clear: your current user doesn’t have ownership over the /home/$USER/.composer folder OR some of the files inside.
Solution: Change the ownership of the .composer folder to be owned by your user:
sudo chown $USER -R /home/$USER/.composer
Let me know in the comments if that worked for you.