workerman启动的时候提示pcntl没找到

0

workerman启动的时候提示pcntl没找到
如图


图片

已邀请:

walkor

赞同来自: 2b青年

提示的意思是缺少 pcntl 扩展(一般也缺少posix扩展),这个扩展是php实现进程控制的一个重要的扩展。安装方法如下:


1、如果是centos系统 并且 php是yum安装
运行 yum -y install php-process ,这样会自动安装 pcntl 和 posix扩展
2、debian、ubuntu系统并且是apt-get安装,一般会自动开启了 pcntl posix扩展
3、如果php是自己编译的,则像@mrfinger 所说,如果你是源码编译的,请到php的源码目录,进到ext目录,然后找到pcntl目录按一下步骤
①. php目录/bin/phpize
②. ./configure
③. make
④. make install
⑤. 把so文件加入到php.ini去

phpgame

赞同来自:

APT-GET
apt-get install php-pear
apt-get install php5-dev
apt-get install libevent-dev
pecl install channel://pecl.php.net/libevent-0.1.0


YUM
yum install -y php-devel
yum install php-pear
yum install libevent-devel
pecl install channel://pecl.php.net/libevent-0.1.0

mrfinger

赞同来自:

如果你是源码编译的,请到php的源码目录,进到ext目录,然后找到pcntl目录按一下步骤


php目录/bin/phpize
./configure
make
make install
把so文件加入到php.ini去

frankth

赞同来自:

我已经安装好了pcntl模块,但是依然提示“You have to enable pcntl ”。

希望各位大神指教一下~


ps:
pcntl可以再phpinfo里面看到,并且我写了一个代码文件,
里面包含pcntl_fork 和pcntl_wait都能够正常的执行。


pcntl
pcntl support enabled

walkor

赞同来自:

workerman使用的是php cli 模式,与网页使用的不是同一个php可执行文件,配置文件php.ini可能也不相同。


可以运行
php --ini
查看php cli使用的是哪个配置文件,然后在里面加入 extension=pcntl.so

frankth

赞同来自:

好的,我试试

frankth

赞同来自:

已经可以开启了。 不过有两个小问题:


还有一些扩展不支持。如sysvmsg. 会不会再使用上有影响?
如果我想把workerman替换http请求的方法,那么是不是之前的php代码只能用php --ini配置的php?


PS:
Workerman is starting ...
----------------------- EXTENSION ------------------------------



  • sysvshm

  • sysvmsg


  • libevent

    ------------------------ WORKERS -------------------------------
    user worker listen processes status
    root BusinessWorker tcp://0.0.0.0:8183 5

    root FileMonitor none 1

    root Gateway tcp://0.0.0.0:8280 5

    root Monitor tcp://127.0.0.1:2021 1

    root TodpoleWeb tcp://0.0.0.0:8383 2



walkor

赞同来自:

还有一些扩展不支持。如sysvmsg. 会不会再使用上有影响?
影响不大


如果我想把workerman替换http请求的方法,那么是不是之前的php代码只能用php --ini配置的php?

要回复问题请先登录注册