在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
相关产品推荐
相关产品推荐

