9

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

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

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

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

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

一些参考资料:

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

4

2 回答 2

9

ZTS:[Z] 结束 [T] 线程 [S] 安全。

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

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

我无法直接建议创建 deb,但是,创建 rpm 非常简单,https://github.com/krakjoe/spex有一个起点,然后您可以使用外星人转如果您不知道如何直接创建 deb 包,请将 RPM 转入 deb。

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

附带说明一下,您引用的有关 PHP 不是线程安全的文章是 2008 年的,这是非常错误的。核心是线程安全的,有一些扩展本质上是不安全的(没有抽象得很糟糕,但从根本上说不合适)。

于 2013-04-03T16:51:02.883 回答
6

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

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

我会使用“checkintsall”实用程序自己编译和打包它。因此,Apt 将有能力跟踪 PHP 版本。我还要求 Canonical 提供 ZTS PHP 的软件包。

于 2013-04-03T13:00:09.030 回答