前言
下载Linux系统的Demo后,解压并上传到宝塔的网站目录
进入GatewayWorker目录
命令行运行 php start.php start 启动GatewayWorker
这时出现以下报错:
[root@VM-0-7-centos GatewayWorker]# php start.php start
Workerman[start.php] start in DEBUG mode
PHP Fatal error: Uncaught Error: Call to undefined function pcntl_signal() in /www/wwwroot/api.XXX.cn/GatewayWorker/vendor/workerman/workerman/Worker.php:1128
Stack trace:
#0 /www/wwwroot/api.XXX.cn/GatewayWorker/vendor/workerman/workerman/Worker.php(546): Workerman\Worker::installSignal()
#1 /www/wwwroot/api.XXX.cn/GatewayWorker/start.php(37): Workerman\Worker::runAll()
#2 {main}
thrown in /www/wwwroot/api.XXX.cn/GatewayWorker/vendor/workerman/workerman/Worker.php on line 1128
Fatal error: Uncaught Error: Call to undefined function pcntl_signal() in /www/wwwroot/api.XXX.cn/GatewayWorker/vendor/workerman/workerman/Worker.php:1128
Stack trace:
#0 /www/wwwroot/api.XXX.cn/GatewayWorker/vendor/workerman/workerman/Worker.php(546): Workerman\Worker::installSignal()
#1 /www/wwwroot/api.XXX.cn/GatewayWorker/start.php(37): Workerman\Worker::runAll()
#2 {main}
thrown in /www/wwwroot/api.XXX.cn/GatewayWorker/vendor/workerman/workerman/Worker.php on line 1128
经过查询,发现是php的pcntl_signal函数被禁用导致的。
在宝塔的php配置中,解除该函数的禁用,还是出现同样的报错
后来又查询centos7安装pcntl扩展
,还有其他的一些答案,包括修改php的版本,都没有解决问题。
搜索到的很多解决办法,都是无效的,花费了不少时间。
怎么办呢?
解除php函数禁用
先检查系统已安装的php扩展:
php -m
发现pcntl扩展已经在列表中,说明已安装好了该扩展。
接下来去workerman官方网站顶部的搜索框,搜索pcntl_signal
,找到了同样的问题,并指向网址。打开该网址,进入官网文档,里面提供了解决办法
首先使用脚本,检查禁用函数
curl -Ss https://www.workerman.net/check | php
执行结果:
[root@VM-0-7-centos GatewayWorker]# curl -Ss https://www.workerman.net/check | php
PHP Version >= 5.4.0 [OK]
Extension pcntl check [OK]
Extension posix check [OK]
Functions pcntl_signal_dispatch,pcntl_signal,pcntl_alarm,pcntl_fork,proc_open,shell_exec has be disabled. Please check disable_functions in /www/server/php/81/etc/php.ini
see http://www.workerman.net/doc/workerman/faq/disable-function-check.html
然后执行脚本以解除依赖的函数禁用
curl -Ss https://www.workerman.net/fix | php
执行结果:
[root@VM-0-7-centos GatewayWorker]# curl -Ss https://www.workerman.net/fix | php
pcntl_exec [enabled]
pcntl_alarm [enabled]
pcntl_fork [enabled]
pcntl_waitpid [enabled]
pcntl_wait [enabled]
pcntl_wifexited [enabled]
pcntl_wifstopped [enabled]
pcntl_wifsignaled [enabled]
pcntl_wifcontinued [enabled]
pcntl_wexitstatus [enabled]
pcntl_wtermsig [enabled]
pcntl_wstopsig [enabled]
pcntl_signal [enabled]
pcntl_signal_dispatch [enabled]
pcntl_get_last_error [enabled]
pcntl_strerror [enabled]
pcntl_sigprocmask [enabled]
pcntl_sigwaitinfo [enabled]
pcntl_sigtimedwait [enabled]
pcntl_getpriority [enabled]
pcntl_setpriority [enabled]
success
最后再调用php start.php start
成功启动服务,问题得到解决
[root@VM-0-7-centos GatewayWorker]# php start.php start
Workerman[start.php] start in DEBUG mode
--------------------------------------------- WORKERMAN ----------------------------------------------
Workerman version:4.0.27 PHP version:8.1.13
---------------------------------------------- WORKERS -----------------------------------------------
proto user worker listen processes status
tcp root YourAppBusinessWorker none 4 [OK]
tcp root YourAppGateway tcp://0.0.0.0:8282 4 [OK]
tcp root Register text://0.0.0.0:1238 1 [OK]
------------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
Bad request for Register service. Request info(IP:127.0.0.1, Request Buffer:GET / HTTP/1.1). See http://doc2.workerman.net/register-auth-timeout.html
Register auth timeout (127.0.0.1). See http://doc2.workerman.net/register-auth-timeout.html
安装Composer
在GatewayWorker
目录,执行如下命令,安装composer.phar
curl -sS https://getcomposer.org/installer | php
更新版本
composer selfupdate
执行install命令
php composer.phar install
更新目录和依赖
php composer.phar update
1. 官方交流QQ群,添加多个不批。建议使用安卓手机或电脑申请。
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » GatewayWorker启动服务时,出现Call to undefined function pcntl_signal()报错提示的解决办法
飞云脚本圈: 586333520
Auto.js学习交流③群:286635606
Auto.js学习交流②群:712194666(满员)
IOS免越狱自动化测试群:691997586
2. 盗版,破解有损他人权益和违法作为,请各位会员支持正版。
3. 本站部分资源来源于用户上传和网络搜集,如有侵权请提供版权证明并联系站长删除。
4.如未特别申明,本站的技术性文章均为原创,未经授权,禁止转载/搬运等侵权行为。
5.全站所有付费服务均为虚拟商品,购买后自动发货。售出后概不接受任何理由的退、换。注册即为接受此条款。
6.如果站内内容侵犯了您的权益,请联系站长删除。
飞云脚本 » GatewayWorker启动服务时,出现Call to undefined function pcntl_signal()报错提示的解决办法