Laravel Horizon 抛出错误:调用未定义的函数 Laravel\Horizon\Console\pcntl_async_signals()
Posted
技术标签:
【中文标题】Laravel Horizon 抛出错误:调用未定义的函数 Laravel\\Horizon\\Console\\pcntl_async_signals()【英文标题】:Laravel Horizon throws error : Call to undefined function Laravel\Horizon\Console\pcntl_async_signals()Laravel Horizon 抛出错误:调用未定义的函数 Laravel\Horizon\Console\pcntl_async_signals() 【发布时间】:2019-07-01 04:39:51 【问题描述】:我已经按照documentation成功安装并设置了laravel-horizon
当我运行这个命令时php artisan horizon
它抛出以下错误:
Symfony\Component\Debug\Exception\FatalThrowableError : 调用 未定义函数 Laravel\Horizon\Console\pcntl_async_signals()
当我打开http://127.0.0.1:8000/horizon/dashboard 时,horizon 仪表板状态总是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 Horizon
【问题讨论】:
您能否验证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
给了我更清晰的输出,比如
Horizon 启动成功。
【讨论】:
【参考方案2】:此错误与 laravel 和 Horizon 无关。 pcntl_async_signals() 是一个 php 方法 a link 。要启用 PCNTL,您应该使用 pcntl 编译 php 如果您使用 DirectAdmin 作为控制面板,您可以使用以下说明: 点击here!
【讨论】:
以上是关于Laravel Horizon 抛出错误:调用未定义的函数 Laravel\Horizon\Console\pcntl_async_signals()的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Horizon - Redis - HAProxy - 从服务器读取行时出错
Laravel 护照抛出错误:“在 null 上调用成员函数 createToken()”