Here’s what I ran into when I tried to install a project that required laravel/horizon via Composer .
$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for laravel/horizon v1.0.3 -> satisfiable by laravel/horizon[v1.0.3].
- laravel/horizon v1.0.3 requires ext-posix * -> the requested PHP extension posix is missing from your system.
...
The error message requires ext-posix * -> the requested PHP extension posix is missing from your system is actually confusing. On CentOS, there’s no PHP package called ‘posix’, even though the PHP module is called POSIX.
$ php -m | grep posix
(If that doesn’t return any results, the posix extension is missing.)
On CentOS, the package you’re looking for is called process, as it contains a set of functions/methods to help with creating child processes , sending signals, parsing ID/GIDs, …
If you’re using the IUS repositories on CentOS/Red Hat , you can install them via;
$ yum install php71u-process
(The package name follows the PHP version: php72u-process, php73u-process, and so on. The php71u packages have since been retired by IUS, as PHP 7.1 reached its end of life, so on a current install you’ll want the -process package for whichever PHP version you’re running.)
Afterwards, if you run composer again, it’ll work. To verify if the posix extension is installed properly, run php -m again.
$ php -m | grep posix
posix
Now, the posix extension is installed.