开发者社区 问答 正文

为 OLS 的 LSPHP 编译扩展教程


前言


OpenLiteSpeed(简称:OLS)默认提供的PHP扩展太少了,只有几个基本的PHP扩展,例如 APCu、php-redis 这样的拓展都是没有二进制包的,需要我们自行编译,这里就以 php-redis 为例介绍如何为 LSPHP 编译扩展。

教程


一、安装 lsphp-dev/lsphp-devel 为编译二进制扩展提供所需的内容:


Ubuntu/Debian 安装 PHP7.1 的 dev:


apt install lsphp71-dev -y


RHEL/CentOS 安装 PHP7.1 的 dev:


yum install lsphp71-devel -y


二、添加系统变量,以使用 lsphp 的 phpize 并使其生效:


[ -z "`grep ^'export PATH=' /etc/profile`" ] && echo "export PATH=/usr/local/lsws/lsphp71/bin:\$PATH" >> /etc/profile. /etc/profile


三、使用 PECL 命令安装 php-redis:


pecl install redis


就会自动开始下载PECL并编译,中途可以会遇到问:


enable igbinary serializer support?[no] :

默认回车就是不安装 igbinary 拓展,如果要输入 y 就编译的时候开启 igbinary 参数,不过前提是我们按这个教程的流程先安装好了 php-igbinary 才行,不然会编译失败。


四、添加 ini 以启用扩展
以,lsphp7.1 为例:
cd /usr/local/lsws/lsphp71/etc/php/7.1/mods-available
touch redis.ini
echo "extension=redis.so" | tee -a redis.ini

五、然后重启 OLS,就成功了! /usr/local/lsws/bin/lswsctrl restart

打开探针或者phpinfo看一看吧~

展开
收起
妙正灰 2017-10-29 23:27:53 3132 分享 版权
阿里云 AI 助理回答

在您的教程中,您已经正确地指出了为OpenLiteSpeed(OLS)编译额外PHP扩展的初步步骤,包括安装必要的开发包和配置环境变量。接下来,我将基于您已提供的信息,继续补充如何具体编译php-redis扩展的步骤。

步骤三:下载并解压php-redis源码

首先,您需要从PECL或其他可靠来源下载php-redis扩展的源代码。可以通过以下命令完成:

wget https://pecl.php.net/get/redis.tar.gz
tar -zxvf redis.tar.gz
cd redis-*

这里的redis-*是解压后得到的目录名,可能会根据版本不同而有所变化。

步骤四:使用lsphp的phpize准备编译环境

确保您之前设置的系统变量生效,然后运行phpize来生成编译配置文件:

. /etc/profile  # 确保PATH变量生效
lsphp71-phpize

步骤五:配置并编译php-redis扩展

接下来,配置编译选项,并编译扩展:

./configure --with-php-config=/usr/local/lsws/lsphp71/bin/php-config
make

这里假设OpenLiteSpeed的LSPHP路径为/usr/local/lsws/lsphp71/,请根据实际情况调整--with-php-config的路径。

步骤六:安装编译好的扩展

编译完成后,使用以下命令安装到LSPHP的扩展目录:

make install

这通常会将.so文件安装到类似于/usr/local/lsws/lsphp71/lib/php/extensions/no-debug-non-zts-20160303/的目录下。

步骤七:启用php-redis扩展

最后,需要编辑LSPHP的php.ini文件来启用这个扩展。找到对应的php.ini文件(可能位于/usr/local/lsws/lsphp71/etc/php/7.1/litespeed/php.ini),并添加以下行:

extension=redis.so

保存更改后,重启OpenLiteSpeed服务以使更改生效:

systemctl restart lsws

或者如果您使用的是其他服务管理工具,如service或init.d脚本,请相应地使用正确的重启命令。

通过以上步骤,您应该成功为OpenLiteSpeed的LSPHP编译并启用了php-redis扩展。记得检查PHP的错误日志以确认扩展是否加载无误,并通过phpinfo()函数验证redis扩展的存在。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答