如何在Ubuntu上安装PHP pthreads扩展?

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

在我看来,最好的select是用aptitude命令安装这个扩展。 例如像aptitude install php5-mysql 。 另一个好主意是使用pecl pecl install pthreads 。 但是,由于以下错误,对我来说不起作用:

检查检查ZTS …configuration:错误:pthreads需要ZTS,请重新编译PHP启用ZTS

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

  • 我想我应该卸载原始的PHP包,然后和所有的依赖关系。 因为如果我通过标准的PHP编译它,那么任何软件包更新都会覆盖我的更改。 是的,另一个select是保持PHP的更新。 无论如何,这引入了一些额外的工作,使设置更复杂。 我们在分布式团队中工作。 而且我不希望其他人在生产服务器上处理这个复杂的设置。
  • 我想在服务器上安装更新。 我不想重新编译PHP,因为安全修复等
  • 我不想在生产服务器上编译任何东西,并多次执行此操作。 然后,我应该build立我自己的软件包,并用新版本更新等。抱歉,但我不够聪明,这样做。 可能在2 – 3年,但不是现在。 因为这里有很多事情要记住。 例如,如何用自定义包replace标准的PHP包,同时仍然满足所有的依赖关系。

一些参考:

  • dynamicconfigurationPHP的线程安全–enable-maintainer-zts,或使用YUM安装pThreads?
  • 如何使用Pthreads PHP扩展(在Ubuntu中) – 一些关于我将要在这里做什么。
  • 构buildpthreads

这篇文章似乎是旧的,而不是实际的。 我会保留仅供参考。 我想它应该被解读为“3年前PHP不是线程安全的”。

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

ZTS:[Z] end [T] hread [S] afety。

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

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

我不能直接创建一个deb的建议,但是,创建一个rpm是相当微不足道的, https://github.com/krakjoe/spex有一个开始的地方,然后你可以使用外星人变成一个如果你无法找到如何直接创建deb包的话,将RPM转换成deb。

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

在附注中,您提到的关于PHP的文章不是线程安全的,从2008年开始,这是非常错误的。 核心是线程安全的,有一些本质上不安全的扩展(不是抽象的,但从根本上不合适的)。

看来,Ubuntu在官方软件库中没有用于线程安全PHP的包。 Pthreads扩展需要ZTS。 因此,你有两个选择:

  1. 编译它自己:
  2. 在某个地方找到一个.deb软件包,例如其他类似Debian的系统的软件仓库。

我会使用“checkinsall”工具自己编译和打包。 因此,Apt将有能力跟踪PHP版本。 我也会要求Canonical为ZTS PHP打包。