Laravel Horizo​​n引发错误:调用未定义函数Laravel \ Horizo​​n \ Console \ pcntl_async_signals()

时间:2019-02-07 05:40:09

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

我已经按照documentation

成功安装并设置了laravel-horizo​​n。

当我运行此命令php artisan horizon

它抛出以下错误:

  

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

enter image description here

当我打开http://127.0.0.1:8000/horizon/dashboard时,地平线仪表板状态始终无效

enter image description here

我正在使用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

2 个答案:

答案 0 :(得分:0)

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

就像我使用XAMPP一样,我必须在PATH文件中设置bash_profile才能使用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,所以出现了新错误

enter image description here

为解决此错误,我在 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成功启动。

答案 1 :(得分:0)

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