环境是 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
其它步骤相同