当前位置: 首页 > 文档资料 > Swoole 中文文档 >

安装问题

优质
小牛编辑
138浏览
2023-12-01

在phpinfo中有在php -m中没有

先确认CLI模式下是否有,命令行输入php --ri swoole

如果输出了Swoole的扩展信息就说明你安装成功了!

99.999%的人在此步成功就可以直接使用swoole了

不需要管php -m或者phpinfo网页打印出来是否有swoole

因为Swoole是运行在cli模式下的,在传统的fpm模式下功能十分有限

fpm模式下任何异步/协程等主要功能都不可以使用,99.999%的人都不能在fpm模式下得到想要的东西,却纠结为什么fpm模式下没有扩展信息

先确定你是否真正理解了Swoole的运行模式,再继续追究安装信息问题!

原因

编译安装完Swoole后,在php-fpm/apachephpinfo页面中有,在命令行的php -m中没有,原因可能是cli/php-fpm/apache使用不同的php.ini配置

解决办法

  1. 确认php.ini的位置

cli命令行下执行php -i | grep php.ini或者php --ini找到php.ini的绝对路径

php-fpm/apache则是查看phpinfo页面找到php.ini的绝对路径

  1. 查看对应php.ini是否有extension=swoole.so
cat /path/to/php.ini | grep swoole.so

pcre.h: No such file or directory

编译Swoole扩展出现

fatal error: pcre.h: No such file or directory

原因是缺少pcre,需要安装libpcre

ubuntu/debian

sudo apt-get install libpcre3 libpcre3-dev

centos/redhat

sudo yum install pcre-devel

其他Linux

PCRE官方网站下载源码包,编译安装pcre库。

安装好PCRE库后需要重新编译安装swoole,然后使用php --ri swoole查看swoole扩展相关信息中是否有pcre => enabled

'__builtin_saddl_overflow' was not declared in this scope

error: '__builtin_saddl_overflow' was not declared in this scope
  if (UNEXPECTED(__builtin_saddl_overflow(Z_LVAL_P(op1), 1, &lresult))) {

note: in definition of macro 'UNEXPECTED'
 # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)

这是一个已知的问题。问题是CentOS上的默认gcc缺少必需的定义,即使在升级gcc之后,PECL也会找到旧的编译器。

要安装驱动程序,必须首先通过安装devtoolset集合来升级gcc,如下所示:

sudo yum install centos-release-scl
sudo yum install devtoolset-7
scl enable devtoolset-7 bash

fatal error: 'openssl/ssl.h' file not found

请在编译时增加--with-openssl-dir参数指定 openssl 库的路径

!> 使用pecl安装Swoole时,如果要开启openssl也可以增加--with-openssl-dir参数,如:enable openssl support? [no] : yes --with-openssl-dir=/usr/include/openssl

make或make install无法执行或编译错误

NOTICE: PHP message: PHP Warning: PHP Startup: swoole: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20121212
These options need to match
in Unknown on line 0

PHP版本和编译时使用的phpizephp-config不对应,需要使用绝对路径来进行编译,以及使用绝对路径来执行PHP。

/usr/local/php-5.4.17/bin/phpize
./configure --with-php-config=/usr/local/php-5.4.17/bin/php-config

/usr/local/php-5.4.17/bin/php server.php