我该如何解决"laravel/horizon v1.1.0 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system"?

How can I solve "laravel/horizon v1.1.0 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system"?

当我在命令提示符下运行 composer install时,出现如下错误:

  Problem 1
    - Installation request for laravel/horizon v1.1.0 -> satisfiable by laravel/horizon[v1.1.0].
    - laravel/horizon v1.1.0 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.

  To enable extensions, verify that they are enabled in your .ini files:
    - C:\xampp-7.1\php\php.ini
  You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.

如何解决这个错误?

pcntl 扩展 在 Windows 上不受支持。 (根据您的 XAMPP 信息)

请在 laravel/horizon page #131, #78 上查看这些 github 问题。

我建议你在你的 Windows 系统上使用 Laravel Homestead,它很容易设置并且可以避免你以后遇到许多类似的问题。

运行 composer 使用 --ignore-platform-reqs 选项并指定 pcntlposix

composer install --ignore-platform-reqs

我安装了 PHP 7.2 而不是 7.1,现在一切正常。 pcntl 似乎在 7.1 中不存在,但它与 php 7.2.

一起安装

如果您 运行 在 windows 10 上 homestead,您可以启用 linux 子系统和 运行 horizon 通过那。

https://www.windowscentral.com/how-install-bash-shell-command-line-windows-10

然后安装要求

sudo apt install php7.2-fpm php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-gd php7.2-xml php7.2-cli php7.2-zip php7.2-mysql

这也可以 运行 laravel envoy 但在 windows 上不起作用。

这是一个不错的轻量级解决方案

根据已接受的答案,但您可以将其添加到您的 composer.json 中,这样您就不必一直 运行 --ignore-platform-reqs

"config": {
  "platform": {
    "ext-pcntl": "8.0",
    "ext-posix": "8.0"
  }
}

以这种方式安装 horizon:

composer require laravel/horizon --ignore-platform-reqs

然后 运行

php artisan horizon:install

只需 运行 以下内容:

composer install --ignore-platform-reqs

注意:Windows

不支持 pcntl

如果您使用的是基于 Unix 映像的 docker,您可以使用 docker utility:

添加它
docker-php-ext-install pcntl

然后您可以确认此扩展程序已安装并在您的容器内启用:

?> php -i | grep pcntl
/usr/local/etc/php/conf.d/docker-php-ext-pcntl.ini,
pcntl
pcntl support => enabled
$composer install --ignore-platform-reqs ext-pcntl

我遇到了一些问题,composer install --ignore-platform-reqs 适合我

谢谢

简单地忽略依赖关系的答案是错误的。这不会为您提供 Horizo​​n 的工作版本或您可能希望安装的任何软件包。必须安装依赖项。

安装示例:

APK

sudo add php8-pcntl php8-pcntl

百胜

sudo yum install -y php-pcntl php-posix

添加这一行

RUN docker-php-ext-install pcntl 之前

RUN composer install

这对我有用

composer require laravel/horizon --ignore-platform-reqs

希望对您有所帮助。