Как я могу решить, что "laravel/horizon v1.1.0 требует ext-pcntl * -> запрашиваемое расширение PHP pcntl отсутствует в вашей системе"?

Когда я бегу 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.

Как я могу решить эту ошибку?

16 ответов

Решение

Запустите композитор с --ignore-platform-reqs вариант и указать pcntl а также posix

composer install --ignore-platform-reqs ext-pcntl ext-posix

Согласно принятому ответу, но вы можете добавить это в свой composer.json, чтобы вам не нужно было запускать --ignore-platform-reqs все время

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

Установить горизонт следующим образом:

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

затем беги

php artisan horizon:install

pcntl расширение не поддерживается в Windows. (на основе вашей информации XAMPP)

Пожалуйста, смотрите эти проблемы с github на странице laravel / horizon стр. № 131, № 78.

Я предлагаю вам использовать Laravel Homestead в вашей системе Windows. Он прост в настройке и избавит вас от многих подобных проблем в будущем.

Если вы используете докер на основе образа Unix, вы можете добавить его с помощью утилиты docker:

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

Примечание: pcntl не поддерживается в Windows

добавить эту строку

RUN docker-php-ext-install pcntlдо

RUN composer install

Это работает для меня

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

Надеюсь, это поможет.

Я установил PHP 7.2 вместо 7.1, и теперь все работает нормально. Похоже, что pcntl не присутствовал в 7.1, но он установлен с php 7.2.

Ответ просто игнорировать зависимость неверен. Это не даст вам рабочую версию Horizon или какой-либо другой пакет, который вы, возможно, надеетесь установить. Зависимости должны быть установлены.

Примеры установки:

APK-файл

      sudo add php8-pcntl php8-pcntl

Ням

      sudo yum install -y php-pcntl php-posix

У меня проблема и composer install --ignore-platform-reqs работает для меня

Благодарность

Если вы используете Windows и столкнулись с этой проблемой, просто игнорируйте ее, поскольку Horizon отлично работает без расширения и не требует его в Windows.

Итак, в основном вы должны использовать следующий

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

Удачи!

Вам необходимо установить пакет, игнорируя требования платформы.

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

Затем запустите

      php artisan horizon:install

Если вы работаете на Windows 10 без усадьбы, вы можете включить подсистему Linux и запустить горизонт через это.

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, который не работает на окнах.

Это хорошее легкое решение

      composer install --ignore-platform-reqs   

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

php artisan horizon:install
$composer install --ignore-platform-reqs ext-pcntl
Другие вопросы по тегам