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

时间:2013-04-03 08:55:49

标签: php ubuntu pthreads ubuntu-12.04

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

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

  

检查ZTS的检查... configure:错误:pthreads需要ZTS,请在启用ZTS的情况下重新编译PHP

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

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

一些参考文献:

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

2 个答案:

答案 0 :(得分:9)

ZTS:[Z]结束[T] hread [S] afety。

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

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

我无法直接建议deb,但创建rpm非常简单,https://github.com/krakjoe/spex有一个起点,你可以使用alien将RPM转换为如果您无法直接找到如何创建deb包的话,请参阅deb。

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

在旁注中,您引用的关于PHP不是线程安全的文章来自2008年,这是非常错误的。核心是线程安全的,有一些本质上不安全的扩展(不是抽象严重,但从根本上说是不合适的)。

答案 1 :(得分:6)

看来,Ubuntu在官方存储库中没有针对线程安全的PHP的包。 Pthreads扩展需要ZTS。因此,您有两种选择:

  1. 自己编译:
  2. 在某处找到.deb包,例如其他类似Debian的系统的存储库。
  3. 我使用“checkintsall”实用程序自行编译和打包。因此,Apt将有能力跟踪PHP版本。我还要求Canonical提供ZTS PHP的软件包。