如何在Ubuntu上安装PHP pthreads扩展


How to install PHP pthreads extension on Ubuntu?

我想在Ubuntu上安装'pthreads' PHP扩展。我使用的是Ubuntu 12.04.1 LTS。如果需要的话,我可以升级。我真的不想从源代码编译任何东西。例如,从源代码重新编译PHP对我来说是一个可怕的想法。

在我看来,最好的选择是安装这个扩展与aptitude命令。比如aptitude install php5-mysql。另一个好主意是使用pecl pecl install pthreads。但由于以下错误,它不适合我:

checking for ZTS…配置错误:pthreads需要ZTS,请重新编译PHP并启用ZTS

让我解释一下为什么我不喜欢从源代码重新编译PHP:

    我想我应该卸载原来的PHP包和所有的依赖。因为如果我在标准PHP上编译它,那么任何包的更新都会覆盖我的更改。是的,另一个选择是保持PHP不更新。无论如何,这引入了一些额外的工作,使设置更加复杂。我们在分布式团队中工作。我不希望其他人在生产服务器上处理这个复杂的设置。我想在服务器上安装更新。我不想重新编译PHP,因为安全修复等。
  • 我不想在生产服务器上编译任何东西,这样做很多次。然后我应该构建自己的包,并用新版本更新它们等等。对不起,我不够聪明,做不到这一点。可能在2-3年后,但不是现在。因为这里有很多东西需要记住。例如,如何用自定义包替换标准PHP包,同时仍然满足所有依赖。

参考:

    动态配置PHP线程安全——enable-维护者-zts,或使用YUM安装pThreads?
  • 如何使用Pthreads PHP扩展(在Ubuntu中)-一些关于我要在这里做什么的讨论。
  • 建筑pthreads

这篇文章似乎很旧,不真实。我把它留着只作参考。我猜它应该被读成"PHP 3年前不是线程安全的"。

  • 不要相信谎言:PHP还不是线程安全的

zt型:[Z] [T] hread结束[S] afety。

ZTS是一个编译时选项,不能在运行时启用。它允许通常在单个线程中执行的PHP解释器在多个线程中执行,每个线程都有自己独立的解释器实例。

你唯一的选择似乎是一个新的构建,然后为你的发行版使用包构建工具。

我不能直接建议创建一个deb,但是,创建一个rpm是非常微不足道的,https://github.com/krakjoe/spex有一个开始的地方,如果你不知道如何直接创建一个deb包,你可以使用alien把一个rpm变成一个deb。

从源代码构建将是不可避免的,除非你能找到一些具有线程安全构建PHP的存储库,以及完整的构建环境。为此,http://pthreads.org/building信息可能对您有用。构建PHP并不难,也不需要花费很多时间,在现代硬件上,您可以在不到一分钟的时间内完成构建。您可以而且应该抓住机会从您的安装中删减脂肪。

顺便说一句,你提到的关于PHP不线程安全的文章是2008年的,这是非常错误的。核心是线程安全的,有一些扩展本质上是不安全的(不是抽象得很糟糕,但从根本上不合适)。

看起来,Ubuntu在官方存储库中并没有一个线程安全的PHP包。Pthreads扩展需要ZTS。因此,您有两个选项:

  1. 自己编译:
  2. 在某个地方找到一个.deb包,例如其他类debian系统的存储库。

我会用"checkintsall"工具自己编译和打包它。因此,Apt将能够跟踪PHP版本。我还要求Canonical提供一个ZTS PHP包。