You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Horizon启动报错:Call to undefined function pcntl_async_signals()

解决Laravel Horizon执行php artisan horizon时的pcntl函数未定义错误

问题场景

在Windows的XAMPP环境中部署Laravel Horizon,Redis运行于WSL,已安装Predis并完成官方配置,执行php artisan horizon时出现以下错误:

Call to undefined function Laravel\Horizon\Console\pcntl_async_signals()
错误位置:vendor\laravel\horizon\src\Console\HorizonCommand.php:48

原因

pcntl_async_signals()是PHP进程控制扩展(pcntl)中的函数,该扩展仅支持类Unix系统(Linux、macOS等),Windows原生PHP环境默认不包含此扩展,而Horizon依赖pcntl实现进程信号管理,因此在Windows下直接运行Horizon会触发该错误。

解决方案

方案1:在WSL中运行Horizon(推荐)

由于Redis已在WSL中运行,直接在WSL环境中操作Laravel项目:

  • 启动WSL终端,切换到你的Laravel项目根目录
  • 确保WSL内已安装对应版本的PHP、Composer,且执行composer install完成依赖安装
  • 运行php artisan horizon启动Horizon

方案2:使用Docker容器运行Horizon

如果习惯用Docker,可以将Laravel项目和Horizon、Redis都部署在Docker容器中,容器环境为类Unix系统,天然支持pcntl扩展:

  • 编写docker-compose.yml配置Laravel、Redis、Horizon服务
  • 启动容器后,进入Horizon容器执行php artisan horizon

内容的提问来源于stack exchange,提问作者Tawhid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 11:03:20