Laravel Horizo​​n 抛出错误:调用未定义的函数 Laravel\Horizo​​n\Console\pcntl_async_signals()

Posted

技术标签:

【中文标题】Laravel Horizo​​n 抛出错误:调用未定义的函数 Laravel\\Horizo​​n\\Console\\pcntl_async_signals()【英文标题】:Laravel Horizon throws error : Call to undefined function Laravel\Horizon\Console\pcntl_async_signals()Laravel Horizo​​n 抛出错误:调用未定义的函数 Laravel\Horizo​​n\Console\pcntl_async_signals() 【发布时间】:2019-07-01 04:39:51 【问题描述】:

我已经按照documentation成功安装并设置了laravel-horizo​​n

当我运行这个命令时php artisan horizon

它抛出以下错误:

Symfony\Component\Debug\Exception\FatalThrowableError : 调用 未定义函数 Laravel\Horizo​​n\Console\pcntl_async_signals()

当我打开http://127.0.0.1:8000/horizon/dashboard 时,horizo​​n 仪表板状态总是inactive

我正在使用 XAMPP,PHP 版本 7.3.0,Laravel 版本 5.7

我已点击此链接:https://github.com/laravel/horizon/issues/154#issuecomment-366712260

composer require ext-pcntl ext-posix

这里是作曲家:

"require": 
        "php": "^7.1.3",
        "ext-pcntl": "^7.2",
        "ext-posix": "^7.2",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "5.7.*",
        "laravel/horizon": "^2.0",
        "laravel/socialite": "^4.0",
        "laravel/tinker": "^1.0",
        "predis/predis": "^1.1",
    ,

我搜索了很多问题,但没有运气, 也试过composer update --ignore-platform-reqs,但还是不行。

请任何人帮助我在我的本地系统中运行 Laravel Horizo​​n

【问题讨论】:

您能否验证pcntl 扩展已安装并启用?你是在 Windows 上运行它吗? 我在 Mac OS 10.13.6 上运行 你发布了php artisan vendor:publish --provider="Laravel\Horizon\HorizonServiceProvider" 吗? @HirenGohel,是的,我已经完成了 @SaurabhMistry:好的,好像你没有安装pcntl 扩展,我认为是错误显示,你可以尝试安装它吗? 【参考方案1】:

搜索 2 小时后,我终于解决了错误:

由于我使用 XAMPP,我必须在 bash_profile 文件中设置 PATH 才能使用 XAMPP 的 php 7.3.0

所以我在

中添加了这个
sudo nano ~/.bash_profile

export XAMPP_HOME=/Applications/XAMPP
export PATH=$XAMPP_HOME/bin:$PATH

然后使用 , 重新加载 bash_profile

source ~/.bash_profile

然后我检查php版本

php -v

它会显示在下面:

PHP 7.3.0 (cli)(构建时间:2018 年 12 月 11 日 01:01:47)(NTS)版权所有 (c) 1997-2018 PHP Group Zend Engine v3.3.0-dev,版权所有 (c) 1998-2018 Zend Technologies

然后我检查php -i | grep pcntl

它会显示:

pcntl 支持 => 启用

所以我尝试运行 php artisan horizon ,启用 pcntl 后再次出现同样的错误

我试图运行composer dump-autoload,所以得到了新的错误

为了解决这个错误,我在 php.ini 文件中添加了pcre.jit=0

Applications/XAMPP/xamppfiles/etc/php.ini

从此链接:https://github.com/composer/composer/issues/7836#issuecomment-447287797

终于从 XAMPP 重启了 apache 服务器,运行composer dump-autoload

然后最后一次运行 php artisan horizon 给了我更清晰的输出,比如

Horizo​​n 启动成功。

【讨论】:

【参考方案2】:

此错误与 laravel 和 Horizo​​n 无关。 pcntl_async_signals() 是一个 php 方法 a link 。要启用 PCNTL,您应该使用 pcntl 编译 php 如果您使用 DirectAdmin 作为控制面板,您可以使用以下说明: 点击here!

【讨论】:

以上是关于Laravel Horizo​​n 抛出错误:调用未定义的函数 Laravel\Horizo​​n\Console\pcntl_async_signals()的主要内容,如果未能解决你的问题,请参考以下文章

何时在 Laravel Horizo​​n 中使用多个主管

Laravel Horizo​​n - Redis - HAProxy - 从服务器读取行时出错

Laravel 护照抛出错误:“在 null 上调用成员函数 createToken()”

如何编辑 laravel 地平线视图

Laravel Blade If 语句在使用 Guard 进行身份验证检查时抛出非对象属性错误

使用 Laravel 5.5 在实时数据库上调用存储过程会引发内存错误