PHPackages                             openpsa/poser - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. openpsa/poser

ActiveLibrary[CLI &amp; Console](/categories/cli)

openpsa/poser
=============

Install CLI executables from Composer packages globally

472PHP

Since Jan 31Pushed 8y ago1 watchersCompare

[ Source](https://github.com/flack/poser)[ Packagist](https://packagist.org/packages/openpsa/poser)[ RSS](/packages/openpsa-poser/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

poser
=====

[](#poser)

poser is an alternative implementation of [Composer](https://getcomposer.org/)'s `global` command that installs packages in a system-wide location. CLI executables from packages are automatically available in `PATH`, just like they were in PEAR.

Composer is a great tool, but let's face it: Its `global` command is slightly mis-named: Packages installed with it end up in Composer's home directory, which is derived from the current user's home directory. So "global" here really means user-level as opposed to system-level, which is what PEAR did.

poser attempts to bridge that gap: It installs packages into a single location (`/usr/local/share/poser`) regardless of which user triggered the command, and it automatically symlinks the bin files of installed packages into `/usr/local/bin`. This means command-line utilities of Composer packages will be available in the shell immediately to all users, without any fiddling in `/etc/profile`or other fun places in the bowels of the OS.

Usage
-----

[](#usage)

The command line syntax and all behavior is exactly as they are in Composer, so you can use their [documentation](https://getcomposer.org/doc/03-cli.md) to get an overview of all commands. The only difference is that the `global` command is currently forbidden. Not so much because it would be impossible to implement, but rather because it doesn't really make much sense to use poser for that. It is meant as a specialised version of Composer for packages you want to install system-wide:

```
# Install PHPUnit and create symlink for phpunit
poser require phpunit/phpunit

# Uninstall PHPUnit and remove symlink
poser remove phpunit/phpunit

# You can use other commands and arguments as in Composer
poser show --installed
```

Installation
------------

[](#installation)

### From git

[](#from-git)

Clone this repo, change into the main directory, and run composer:

```
git clone https://github.com/flack/poser.git
cd poser
php composer.phar install
```

Afterwards, `poser` will be available in your `PATH` and you can start installing packages.

It may seem a bit cumbersome to keep the git repo around, but the alternative currently looks like this:

### Via Composer

[](#via-composer)

First, you must add `"minimum-stability": "alpha"` to `composer.json`in Composer's home directory (typically `/home/[username]/.composer`on Linux). If the file doesn't exist yet, create one with this content:

```
{
    "minimum-stability": "alpha",
    "require": {
    }
}
```

(Ironically, this is necessary because Composer's current release does not meet its own default `minimum-stability` requirement of `stable`..)

Afterwards, you can use Composer to install poser globally:

```
php composer.phar global require openpsa/poser:dev-master
```

You will have to link `poser` into your `PATH` yourself, because there is no way to do this automatically without having a dedicated installer package, which would be doable, but seems a bit excessive right now.

Caveats
-------

[](#caveats)

poser is a quickly-written proof of concept, because I expect that the Composer team will at some point come up with an implementation of its behavior directly in the core. This is just meant to hold us over until then, so there are some limitations:

- `/usr/local/bin` and `/usr/local/share/poser` are hardcoded ATM (but they could be made configurable with relatively little effort)
- Windows is not supported currently. I guess it could be made to work, so pull requests are welcome
- obviously, normal Unix file permission rules still apply. So you should make sure that all users that are supposed to use globally installed utilities actually have access to `/usr/local/share/poser`
- if you uninstall poser (via composer or by deleting the git repo), you will have to remove the `poser` symlink in `/usr/local/bin` manually

###  Health Score

22

—

LowBetter than 21% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/e4f0ce449f03f8b943679aebdd079e951c4d27e3c7c87c15896b9e3426e6a071?d=identicon)[flack](/maintainers/flack)

---

Top Contributors

[![flack](https://avatars.githubusercontent.com/u/425166?v=4)](https://github.com/flack "flack (29 commits)")

### Embed Badge

![Health badge](/badges/openpsa-poser/health.svg)

```
[![Health](https://phpackages.com/badges/openpsa-poser/health.svg)](https://phpackages.com/packages/openpsa-poser)
```

###  Alternatives

[illuminate/console

The Illuminate Console package.

13046.0M6.5k](/packages/illuminate-console)[styleci/cli

The CLI tool for StyleCI

71470.5k9](/packages/styleci-cli)[winbox/args

Windows command-line formatter

20720.9k21](/packages/winbox-args)[tomatophp/filament-artisan

Simple but yet powerful library for running some artisan commands for FilamentPHP

3275.4k1](/packages/tomatophp-filament-artisan)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
