如何解决"laravel/horizo​​n v1.1.0需要ext-pcntl* - >系统中缺少所请求的PHP扩展pcntl"?

Suc*_*Man 22 php laravel composer-php laravel-5.5 laravel-horizon

当我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.
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

小智 43

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

composer install --ignore-platform-reqs
Run Code Online (Sandbox Code Playgroud)

  • 只需选择以下选项:`composer install --ignore-platform-reqs` (12认同)
  • 存在这样的错误:`无效的参数ext-pcntl ext-posix.使用"composer require ext-pcntl\text-posix"代替将包添加到composer.json (3认同)
  • 这并没有解决问题,它只是忽略了错误。您仍然需要启用过程控制扩展才能使 Horizo​​n 正常工作。你应该升级你的 php 安装 (2认同)
  • 我不认为这是一个解决方案。如果您抑制该消息,那么当您开始运行 Horizo​​n 时(我们可以假设您会这样做,因为它在您的composer.json 中),那么您将收到一条错误,指出扩展名丢失。 (2认同)

dai*_*aze 23

按照接受的答案,但你可以添加到您的composer.json,这样你就不必运行--ignore-platform-reqs所有的时间

"config": {
  "platform": {
    "ext-pcntl": "7.2",
    "ext-posix": "7.2"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我一直在到处寻找这个。谢谢! (4认同)

Sau*_*try 20

以这种方式安装地平线:

composer require laravel/horizon --ignore-platform-reqs
Run Code Online (Sandbox Code Playgroud)

然后运行

php artisan horizon:install
Run Code Online (Sandbox Code Playgroud)


Pat*_*.SE 10

如果您使用基于 Unix 映像的docker,您可以使用docker 实用程序添加它:

docker-php-ext-install pcntl
Run Code Online (Sandbox Code Playgroud)

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

?> php -i | grep pcntl
/usr/local/etc/php/conf.d/docker-php-ext-pcntl.ini,
pcntl
pcntl support => enabled
Run Code Online (Sandbox Code Playgroud)


Sap*_*aik 7

pcntlWindows不支持扩展.(根据您的XAMPP信息)

请参阅laravel/horizo​​n页面#131,#78上的这些github问题.

我建议你在你的Windows系统上使用Laravel Homestead,这很容易设置,将来可以避免许多类似的问题.

  • ...这是更好的答案:如果您无法安装其中一个必需的PHP扩展,您希望该库如何工作? (5认同)
  • 您没有抓住重点,它们是 Linux 所必需的,而不是 Windows。它在没有这些扩展的 Windows 上运行良好。 (4认同)
  • 是的,我知道这一点。但是,库需要这些扩展肯定是有原因的 - 如果库需要它们才能正常工作,而您忽略了此要求,它们将无法正常工作 (2认同)

Tre*_*and 6

只需运行以下命令:

composer install --ignore-platform-reqs

注意:Windows 不支持 pcntl


jav*_*asd 5

添加这一行

RUN docker-php-ext-install pcntl

RUN composer install