You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在RHEL系统中编译非线程安全(NTS)版PHP 8.0的方法求助

在RHEL系统编译非线程安全(NTS)版PHP 8.0的步骤

1. 清理旧编译残留

如果之前尝试过编译线程安全版PHP,先彻底清理残留文件,避免干扰新编译:

# 进入之前的PHP源码目录
cd php-8.0.x
make clean && make distclean
# 若已安装过旧版本,执行卸载
make uninstall

2. 安装编译依赖

RHEL系统需先安装编译PHP所需的基础依赖包:

yum install -y gcc gcc-c++ make autoconf libtool bzip2-devel libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel

根据你的扩展需求,可额外安装其他依赖(如mysql-devel用于MySQL扩展)。

3. 下载并解压PHP 8.0源码

从PHP官方获取对应版本的源码包(以8.0.30为例):

wget https://www.php.net/distributions/php-8.0.30.tar.gz
tar -zxvf php-8.0.30.tar.gz
cd php-8.0.30

4. 配置编译参数(核心:禁用线程安全)

类Unix系统中PHP默认编译为NTS版本,但明确添加--disable-zts参数可确保线程安全被禁用,避免误启用。以下是通用配置示例,可根据你的需求调整扩展参数:

./configure \
--prefix=/usr/local/php80 \
--with-config-file-path=/usr/local/php80/etc \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-mysqli \
--with-pdo-mysql \
--with-iconv-dir \
--with-freetype \
--with-jpeg \
--with-png \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--disable-rpath \
--enable-bcmath \
--enable-shmop \
--enable-sysvsem \
--enable-inline-optimization \
--with-curl \
--enable-mbregex \
--enable-mbstring \
--enable-intl \
--enable-pcntl \
--enable-ftp \
--with-gd \
--enable-gd-jis-conv \
--with-openssl \
--with-mhash \
--enable-sockets \
--enable-zip \
--with-readline \
--without-pear \
--disable-zts

注意:不要添加--enable-maintainer-zts参数,这是开启线程安全(ZTS)的开关。

5. 编译并安装

使用多核心加速编译,然后完成安装:

make -j$(nproc)
make install

6. 验证非线程安全状态

编译安装完成后,通过以下方式验证:

/usr/local/php80/bin/php -i | grep "Thread Safety"

输出应为Thread Safety => Disabled,或查看phpinfo()页面的对应项,确认线程安全已禁用。

额外注意事项

  • 若系统中存在通过yum安装的PHP,需先卸载避免冲突:yum remove -y php*
  • 可将PHP路径添加到系统环境变量中,方便全局调用:echo 'export PATH=/usr/local/php80/bin:$PATH' >> /etc/profile && source /etc/profile

内容的提问来源于stack exchange,提问作者D3alWyth1t

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:01:02