【问题标题】:How can I solve "laravel/horizon v1.1.0 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system"?如何解决“laravel/horizo​​n v1.1.0 需要 ext-pcntl * -> 系统中缺少请求的 PHP 扩展 pcntl”?
【发布时间】:2018-07-12 15:31:19
【问题描述】:

当我在命令提示符上运行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.

我该如何解决这个错误?

【问题讨论】:

    标签: php laravel composer-php laravel-5.5 laravel-horizon


    【解决方案1】:

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

    composer install --ignore-platform-reqs
    

    【讨论】:

    • 存在这样的错误:Invalid argument ext-pcntl ext-posix. Use "composer require ext-pcntl ext-posix" instead to add packages to your composer.json.
    • 仅使用以下选项尝试:composer install --ignore-platform-reqs
    • 我也遇到了同样的问题 - 由于某种我不知道的原因,我的 php 以某种方式得到了 unlinked (??)。我在运行php --ini 来定位我想检查的加载配置时发现,它说没有加载配置,没有。最后,我所需要的只是通过brew link php71 --force 重新链接 PHP,并且安装的依赖项没有问题。
    • 这并没有解决问题,它只是忽略了错误。您仍然需要启用过程控制扩展才能让 Horizo​​n 正常工作。你应该升级你的 php 安装
    • 我不认为这是一个解决方案。如果您取消了该消息,那么当您开始运行 Horizo​​n 时(我们可以假设您会这样做,因为它在您的 composer.json 中),那么您将收到一个错误,指出缺少扩展。
    【解决方案2】:

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

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

    【讨论】:

    • 我一直在到处寻找这个。谢谢!
    • 添加了这个,但它没有解决我的问题。我在 MAMP 上运行 PHP 7.3(在 Mac 上)
    • 对我来说完美,这个解决方案在窗口 10 PHP 7.4.15 中工作
    • 完美:适用于 Windows 10,PHP 8.0.3
    【解决方案3】:

    以这种方式安装地平线:

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

    然后运行

    php artisan horizon:install
    

    【讨论】:

      【解决方案4】:

      pcntl 扩展Windows 不支持。 (基于您的 XAMPP 信息)

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

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

      【讨论】:

      • ...这是更好的答案:如果您无法安装所需的 PHP 扩展之一,您希望该库如何工作?
      • @NicoHaase --ignore-platform-reqs...关键字是platform。它在 Windows 上运行,而这些依赖项不会在安装过程中引发麻烦。 okaufmann.ch/development/laravel-horizon-ext-pcntl-and-windows
      • 是的,我知道这一点。但是库必须有任何理由需要这些扩展 - 如果库需要它们才能正常工作而您忽略此要求,它们将无法正常工作
      • 您没有抓住重点,Linux 上需要它们,而不是 Windows。没有这些扩展,它在 Windows 上也能正常工作。
      【解决方案5】:

      如果您使用的是基于 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
      

      【讨论】:

        【解决方案6】:

        只需运行以下命令:

        composer install --ignore-platform-reqs

        注意:pcntl 在 Windows 上不受支持

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            如果您在没有 homestead 的 Windows 10 上运行,您可以启用 linux 子系统并通过它运行 Horizo​​n。

            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 上运行。

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

            【讨论】:

              【解决方案9】:
              $composer install --ignore-platform-reqs ext-pcntl
              

              【讨论】:

                【解决方案10】:

                我有一些问题,composer install --ignore-platform-reqs 为我工作

                谢谢

                【讨论】:

                • 请不要添加 "thanks" 作为答案。它们实际上并没有提供问题的答案,并且可能被未来的访问者视为噪音。一旦你earn足够reputation,你将获得upvote answers你喜欢的特权。这样,问题的未来访问者将看到对该答案的更高投票数,并且回答者也将获得声誉积分奖励。见Why is voting important
                【解决方案11】:

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

                如何安装示例:

                APK

                sudo add php8-pcntl php8-pcntl
                

                好吃

                sudo yum install -y php-pcntl php-posix
                

                【讨论】:

                  【解决方案12】:

                  添加这一行

                  RUN docker-php-ext-install pcntl 之前

                  RUN composer install

                  【讨论】:

                    猜你喜欢
                    • 2019-12-13
                    • 2016-06-20
                    • 2014-04-15
                    • 2018-04-26
                    • 2019-06-16
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多