Centos7 下 PHP 添加缺少的组件 sockets 和 openssl

环境是 centos7 + nginx 1.14 + php 7.2.18,由于新增邮件发送功能,使用的是 socket 通讯的方式,需要开启 php 的 sockes 和 openssl 扩展

安装 sockets 组件

进入源码目录中待操作的组件子目录,并执行 phpize 工具

不删解压后的源码是个好事!使用 cd 命令进入源码目录/ext/sockets 目录,在该目录下运行命令

$ /usr/local/php/bin/phpize

注:/usr/local/php/bin 是php的安装目录,在该目录下应该有 phpize 可执行文件存在

错误应对

如果出现 "Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment vari",则执行以下命令补齐缺失的功能

$ yum install m4
$ yum install autoconf

如果出现 "Cannot find config.m4." ,则将该目录下的 config0.m4 复制并改名到同目录内

$ cp config0.m4 config.m4

再重新运行 phpize

使用 ./configure 进行具体配置

使用命令对要安装的插件进行具体配置,以 sockets 安装为例,运行以下命令

$ ./configure --prefix=/usr/local/php --with-php-config=/usr/local/php/bin/php-config --enable-sockets

注:/usr/local/php是 PHP 安装后的默认目录,/usr/local/php/bin/php-config 也是默认

运行 make && make install

如无错误,继续运行

$ make && make install

如无错误,以下是部分输出结果

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
Installing header files:          /usr/local/php/include/php/

说明 sockets 扩展源码经过编译编程扩展后,安装在了第一行的目录内

修改 PHP.ini 配置,启用扩展

修改 php.ini,默认可以不更改 extension_dir='./' 的值,而只是去掉 extension=sockets 前面的分号注释,使其生效。保存后,重新启动 php-fpm (假设php-fpm在安装后的默认路径下)

$ /etc/init.d/php-fpm reload

查看结果

运行 phpinfo() 函数,在输出页面查看是否有 sockets 的独立显示,并且 Sockets Support 的值为 enabled

安装 Openssl 组件

与安装 sockets 步骤相同,区别是在使用 ./configure 时的语句,不完全一样,使用

$ ./configure --with-openssl --with-php-config=/usr/local/php/bin/php-config

其它步骤相同

posted @ 2019-05-17 19:04  试试手气  阅读(1690)  评论(0编辑  收藏  举报