部署到服务器,显示找不到pcntl扩展,而且pcntl扩展安装一直失败

且听风吟

代码已经写完了,现在要部署到服务器上。服务器中运行 php start.php start.php
Please install pcntl extension. See http://doc3.workerman.net/appendices/install-extension.html
于是参考文档安装这些插件。
1,安装php-process
yum install php-process
2,修改php.ini,
extension=pcntl.so
extension=/data/home/php-7.0.0/ext/pcntl/modules/pcntl.so
3,重启php-fpm
ps aux|grep php-fpm
kill -USR2 42891
4,重启nginx服务器
./nginx -t
./nginx
5,结果是失败的。 

9504 10 0
10个回答

且听风吟

我按照文档http://doc3.workerman.net/315304
附录,安装扩展,得到一个pcntl.so,按照上面的方法配置也是失败的。

  • 暂无评论
智佳思远

php -v看下,是不是装了多个php版本

  • 暂无评论
且听风吟

是的,这都被你知道了!!!
系统环境是从腾讯云市场里装的
操作系统里面装了PHP7.0.0和PHP5.5、5.6...
我现在用的是PHP7
奇怪的是系统里只有一个php.ini文件。

  • 暂无评论
智佳思远

运行 php --ini 查找php.ini文件路径及位置

  • 且听风吟 2018-12-10

    [root@VM_0_7_centos /]# php --ini
    Configuration File (php.ini) Path: /data/home/server/php-7.0.0/etc
    Loaded Configuration File: (none)
    Scan for additional .ini files in: (none)
    Additional .ini files parsed: (none)

且听风吟

非常感谢,/etc/php.ini

  • 且听风吟 2018-12-10

    [root@VM_0_7_centos etc]# find / -name php.ini
    /etc/php.ini

且听风吟

是不是这样的?多个PHP版本,须编译安装在不同路径,他的扩展也要对应在不同的路径!!!
 

  • 暂无评论
且听风吟

关键是这个服务器是从腾讯云市场上下载下来的,我不知道config的路径应该设置在什么地方啊

  • blogdaren 2018-12-10

    每一个PHP发行版都有自己的二进制路径, 查找配置的正确姿势是: /path/to/php --ini
    这个定位出来的 php.ini 就是对应PHP发行版的配置文件

  • 且听风吟 2018-12-10

    [root@VM_0_7_centos bin]# ./php --ini
    Configuration File (php.ini) Path: /data/home/server/php-7.0.0/etc
    Loaded Configuration File: (none)
    Scan for additional .ini files in: (none)
    Additional .ini files parsed: (none)

  • 且听风吟 2018-12-10

    显示是空的

且听风吟

经过了一下午的折腾

# ps -aux | grep pcntl
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
root     32692  0.0  0.0   6384   700 pts/0    S+   17:19   0:00 grep pcntl

pcntl是有这个服务的,可是检查配置的时候还是失败的。

# curl -Ss http://www.workerman.net/check.php | php
PHP Version >= 5.3.3                   
Extension pcntl check                  
Extension posix check                
  • 暂无评论
且听风吟

我已经搞定了,谢谢大家。

  • 暂无评论
且听风吟

我说一下解决方法
1,问题
1.1,环境centos6.5,nginx,php(多版本),mysql
1.2,使用部署服务端,workerman,测试环境失败

# curl -Ss http://www.workerman.net/check.php | php
PHP Version >= 5.3.3                   
Extension pcntl check                  
Extension posix check                 

2,解决方法
2.1,看下版本

# php -v
PHP 7.0.0 (cli) (built: Dec  4 2015 23:12:58) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies,

2.2 到官网(http://php.net/releases/)下载 7.0.0
2.3 解压

tar -zxvf   php-7.0.0.tar.gz

2.4 进入源码中的ext/pcntl目录

cd php-7.0.0/ext/pcntl/

2.5 运行 phpize 命令

phpize

2.6  配置

./configure

2.7 编译安装

make && make install

2.8 检查一下当前版本的位置

# ./php --ini
Configuration File (php.ini) Path: /data/home/server/php-7.0.0/etc
Loaded Configuration File: (none)
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)

发现这个php.ini文件是没有的
那么要从/etc/php.ini拷贝到/data/home/server/php-7.0.0/etc

cp /etc/php.ini  /data/home/server/php-7.0.0/etc

2.9 在两个php.ini文件中都添加

extension=pcntl.so

3所有的配置完成了,重启php-fpm和nginx
先用下面的命令找到php-fpm的进程,14304

# ps aux |grep php-fpm
root     14304  0.0  0.0 122488  6516 ?        Ss   18:16   0:00 php-fpm: master process (/data/home/server/php-7.0.0/etc/php-fpm.conf)
www      14305  0.0  0.0 138960 16632 ?        S    18:16   0:03 php-fpm: pool www                 
www      14306  0.0  0.0 138964 16684 ?        S    18:16   0:03 php-fpm: pool www    

用下面的命令重启

kill -USR2 14304

检查一下ngnix配置是否正确

ngnix -t

重启nginx

nginx -s reload

 
4,最后查看结果

# curl -Ss http://www.workerman.net/check.php | php
PHP Version >= 5.3.3                   
Extension pcntl check                  
Extension posix check                  
  • 暂无评论
年代过于久远,无法发表回答
🔝