【问题标题】: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 扩展,我认为是错误显示,你可以尝试安装它吗?

标签: php laravel xampp laravel-5.7 laravel-horizon


【解决方案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

    【讨论】:

      猜你喜欢
      • 2022-09-29
      • 1970-01-01
      • 2022-06-30
      • 2018-05-02
      • 1970-01-01
      • 2019-10-04
      • 2018-05-29
      • 2020-09-27
      • 1970-01-01
      相关资源
      最近更新 更多