1、基于 Composer 安装 laravel/horizon 时,报错:Package laravel/horizon at version ~5.6 has requirements incompatible with your PHP version, PHP extensions and Composer version。如图1
PS E:/wwwroot/larabbs> composer require "laravel/horizon:~5.6"
[InvalidArgumentException]
Package laravel/horizon at version ~5.6 has requirements incompatible with your PHP version, PHP extensions and Com
poser version:
- laravel/horizon v5.7.17 requires ext-pcntl * but it is not present.
- laravel/horizon v5.7.17 requires ext-posix * but it is not present.
require [--dev] [--dry-run] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--fixed] [--no-suggest] [--no-progress] [--no-update] [--no-install] [--no-scripts] [--update-no-dev] [-w|--update-with-dependencies] [-W|--update-with-all-dependencies] [--with-dependencies] [--with-all-dependencies] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--] [<packages>]...
PS E:/wwwroot/larabbs>
2、基于提示信息,安装 PHP 扩展:pcntl、posix,但是 pcntl 在 Windows 下不可用。如图2
3、最终决定,先在本地 Windows 中安装起来,后续在 Linux 中运行就是。启用选项:–ignore-platform-reqs ,忽略所有平台要求(php、hhvm、lib-* 和 ext-*)并强制安装,即使本地机器不满足这些要求。安装成功。如图3
PS E:/wwwroot/larabbs> composer require "laravel/horizon:~5.6" --ignore-platform-reqs ./composer.json has been updated Running composer update laravel/horizon Loading composer repositories with package information Updating dependencies Lock file operations: 1 install, 0 updates, 0 removals - Locking laravel/horizon (v5.7.17) Writing lock file Installing dependencies from lock file (including require-dev) Package operations: 1 install, 0 updates, 0 removals - Downloading laravel/horizon (v5.7.17) - Installing laravel/horizon (v5.7.17): Extracting archive 1 package suggestions were added by new dependencies, use `composer suggest` to see details. Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead. Generating optimized autoload files > Illuminate/Foundation/ComposerScripts::postAutoloadDump > @php artisan package:discover --ansi Discovered Package: barryvdh/laravel-debugbar Discovered Package: facade/ignition Discovered Package: fruitcake/laravel-cors Discovered Package: intervention/image Discovered Package: laravel/horizon Discovered Package: laravel/sail Discovered Package: laravel/sanctum Discovered Package: laravel/tinker Discovered Package: laravel/ui Discovered Package: mews/captcha Discovered Package: mews/purifier Discovered Package: nesbot/carbon Discovered Package: nunomaduro/collision Discovered Package: overtrue/laravel-lang Discovered Package: summerblue/generator Discovered Package: summerblue/laravel-active Package manifest generated successfully. 83 packages you are using are looking for funding. Use the `composer fund` command to find out more! > @php artisan vendor:publish --tag=laravel-assets --ansi --force Copied Directory [/vendor/laravel/horizon/public] To [/public/vendor/horizon] Publishing complete. PS E:/wwwroot/larabbs>
4、安装完毕,浏览器打开 larabbs.local/horizon 访问控制台。符合预期。如图4
5、只不过不能够使用 horizon 命令来启动队列系统和任务监控。报错:Call to undefined function Laravel/Horizon/Console/pcntl_async_signals() 。如图5
PS E:/wwwroot/larabbs> php artisan horizon
Horizon started successfully.
Error
Call to undefined function Laravel/Horizon/Console/pcntl_async_signals()
at E:/wwwroot/larabbs/vendor/laravel/horizon/src/Console/HorizonCommand.php:48
44▕ );
45▕
46▕ $this->info('Horizon started successfully.');
47▕
➜ 48▕ pcntl_async_signals(true);
49▕
50▕ pcntl_signal(SIGINT, function () use ($master) {
51▕ $this->line('Shutting down...');
52▕
1 E:/wwwroot/larabbs/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:36
Laravel/Horizon/Console/HorizonCommand::handle(Object(Laravel/Horizon/Repositories/RedisMasterSupervisorRepository))
2 E:/wwwroot/larabbs/vendor/laravel/framework/src/Illuminate/Container/Util.php:40
Illuminate/Container/BoundMethod::Illuminate/Container/{closure}()
PS E:/wwwroot/larabbs>
6、后续在安装其他扩展时,也需要添加参数: –ignore-platform-reqs,否则会报错。不过,强烈建议不要使用此参数,后续会出现不可预计的问题。如图6
PS E:/wwwroot/larabbs> composer require "spatie/laravel-permission:~3.0"
./composer.json has been updated
Running composer update spatie/laravel-permission
Loading composer repositories with package information
Updating dependencies
Your requirements could not be resolved to an installable set of packages.
Problem 1
- laravel/horizon is locked to version v5.7.17 and an update of this package was not requested.
- laravel/horizon v5.7.17 requires ext-pcntl * -> it is missing from your system. Install or enable PHP's pcntl extension.
To enable extensions, verify that they are enabled in your .ini files:
- C:/php-7.4.27/php.ini
You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
PS E:/wwwroot/larabbs> git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
PS E:/wwwroot/larabbs> composer require "spatie/laravel-permission:~3.0" --ignore-platform-reqs
./composer.json has been updated
Running composer update spatie/laravel-permission
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking spatie/laravel-permission (3.18.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading spatie/laravel-permission (3.18.0)
- Installing spatie/laravel-permission (3.18.0): Extracting archive
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating optimized autoload files
> Illuminate/Foundation/ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
Discovered Package: barryvdh/laravel-debugbar
Discovered Package: facade/ignition
Discovered Package: fruitcake/laravel-cors
Discovered Package: intervention/image
Discovered Package: laravel/horizon
Discovered Package: laravel/sail
Discovered Package: laravel/sanctum
Discovered Package: laravel/tinker
Discovered Package: laravel/ui
Discovered Package: mews/captcha
Discovered Package: mews/purifier
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Discovered Package: overtrue/laravel-lang
Discovered Package: spatie/laravel-permission
Discovered Package: summerblue/generator
Discovered Package: summerblue/laravel-active
Package manifest generated successfully.
84 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
Copied Directory [/vendor/laravel/horizon/public] To [/public/vendor/horizon]
Publishing complete.
PS E:/wwwroot/larabbs>
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/250667.html
