安装 Laravel/horizon 踩过的坑

报错图:

安装laravel/horizon踩过的坑

问题原因

我们简单翻译一下提示信息就可以看到,整体说的是laravel/horizon依赖或者需要ext-pcntl拓展,我们可以在php.ini中修改并使用。这就是大概的意思,但是我去php.ini找了,没有找到。

解决办法
"config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true,
        "platform": {
            "ext-pcntl": "7.2",
            "ext-posix": "7.2"
        }
    },

可以看到,我们可以在composer.json文件里面的config里面加上platform配置,楼主运行了一下,完美解决。可是这是为什么呢?
从stackoverflow上找到了答案,该错误表明未安装PCNTL PHP扩展,并且Horizon需要提供此扩展的PHP环境。

PCNTL扩展为Unix风格的进程管理和信令提供了一个API。由于其固有的重点是仅在类似Unix或Linux的操作系统中可用的功能,因此此扩展不支持Windows,如文档中所述:

注意:此扩展名在Windows平台上不可用。

通过此API,Laravel Horizon使用PHP 7.1新增的异步信号处理功能来管理队列工作进程。因此,Horizon当前不支持Windows,Windows开发人员需要使用虚拟环境(例如Homestead)来安装和运行Horizon。

我们加上这两项就可以安装的原因就是我们设置忽略了版本匹配,如果有不对的地方,欢迎大家修改指正。

本作品采用《CC 协议》,转载必须注明作者和本文链接
空舟湖上~      ——Jouzeyu
Jouzeyu
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 4

为啥我 添加了没有用,还是报错。。。 :joy:

10个月前 评论

完美解决问题! 谢谢分享。 PS: 还是习惯用Win :)

8个月前 评论

我也碰到这个问题了

7个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!