Как я могу решить, что "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