为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 编译错误 *with* zts support

PHP 编译错误 *with* zts support

PHP
潇潇雨雨 2022-05-27 16:48:37
我尝试编译 php 5.6、php 7.1 和 php 7.3令我惊讶的是,它们都是用 ZTS 编译的。我使用了我一直使用的相同选项,但这次有所不同。我怀疑是 Apache,但也是用我常用的选项编译的。任何想法?阿帕奇./configure --prefix=/usr/local/httpd-2.4.41 --enable-modules=all --enable-mods-shared=all --enable-mpms-shared=allphp./configure --prefix=/usr/local/php-7.1.33-2.4 --with-apxs2=/usr/local/httpd-2.4.41/bin/apxs  \--with-mysqli=shared --with-pdo-mysql=shared                                           \--with-sqlite3=shared --with-pdo-sqlite=shared                                         \--with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-freetype-dir=/usr            \--with-openssl=shared                                                                  \--enable-pcntl=shared --enable-sockets=shared                                          \--enable-ftp=shared                                                                    \--with-curl=shared                                                                     \--with-mhash=shared                                                                    \--enable-wddx=shared                                                                   \--enable-mbstring=shared                                                               \--enable-intl=shared                                                                   \--enable-exif=shared                                                                   \--with-gmp=shared                                                                      \--enable-calendar=shared                                                               \--enable-soap=shared                                                                   \--with-zlib=shared --enable-zip=shared                                                 \--enable-bcmath=shared
查看完整描述

1 回答

?
达令说

TA贡献1821条经验 获得超6个赞

结果是这样的:

Apache 服务器可能与多个 MPM 模块一起工作。可能 99% 的 PHP 安装使用MPM prefork

https://httpd.apache.org/docs/2.4/mod/prefork.html

在这种模式下,apache 产生几个子进程fork(),PHP 不需要是线程安全的。

在 Linux 下这种模式非常快,因为 Linux 有非常快fork()的 . 它与基于线程的程序一样快。

但是,安装 Apache 时,配置文件使用MPM Worker.

https://httpd.apache.org/docs/2.4/mod/worker.html

代替fork(),此模式使用线程。对于这种模式,PHP 必须是线程安全的。

在 Linux MPM Worker+ PHP 上比 慢MPM prefork,但在 Windows 和 MacOS 等其他系统上,它可能更快。

MPM Worker在 Apache 配置中默认选择模式。

由于我刚刚制作make install并且从未更改过 Apache conf 文件选择是MPM Worker. 这是从 PHP 配置脚本中提取的,结果是线程安全的 PHP。

我确实MPM prefork在 Apache conf 中进行了选择,并且 PHP 编译符合预期。


查看完整回答
反对 回复 2022-05-27
  • 1 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信