我想Ubuntu上安装了“并行线程的PHP扩展。 我使用Ubuntu 12.04.1 LTS。 如果需要,我可以升级。 我真的不想从源代码编译任何东西。 例如重新编译PHP从源头听起来像一个可怕的想法给我。
在我看来,最好的办法是安装这个扩展与aptitude
命令。 例如像aptitude install php5-mysql
。 另一个好主意是使用PECL pecl install pthreads
。 但对我来说,因为下面的错误不工作:
对于ZTS ...配置检查检查:错误:并行线程需要ZTS,请重新编译PHP的ZTS启用
让我来解释为什么我不喜欢这个主意,从源代码重新编译PHP:
- 我想我应该卸载,然后原来的PHP包和所有的依赖。 因为如果我编译它在标准的PHP那么任何软件包更新将覆盖我的变化。 是的,另一种选择是让PHP的更新。 反正这引入了一些额外的工作,使安装更加复杂。 我们在分布式团队工作。 而且我不希望其他人来处理在生产服务器上这个复杂的设置。
- 我想在服务器上安装更新。 我不想重新编译,因为安全补丁等的PHP
- 我不想编译在生产服务器上任何事情,做了很多次。 然后,我要建立自己的包和新版本等更新对不起他们,但我不够聪明,做到这一点。 可能在2 - 3年,但不是现在。 因为有很多事情要记住这里。 例如如何,更换标准的PHP包定制包,同时仍然满足所有的依赖关系。
一些参考:
- 动态配置PHP线程安全--enable-维护者-ZTS,或者使用YUM安装并行线程?
- 如何使用Pthreads的PHP扩展(在Ubuntu) -什么,我要在这里做一些会谈。
- 大厦并行线程
这篇文章似乎是旧的,而不是实际的。 我会保持它,仅供参考。 我想这应该读作“PHP不是线程安全3年前”。
ZTS: [Z]end [T]hread [S]afety.
ZTS is a compile time option that cannot be enabled at runtime. It allows the PHP interpreter, which usually executes in a single thread, to be executed in many, each with their own isolated instance of the interpreter.
The only option for you appears to be a fresh build, and then using package building tools for your distribution.
I'm not able to advise on the creation of a deb directly, however, creating an rpm is quite trivial, https://github.com/krakjoe/spex there's a starting place for that, you can then use alien to turn an RPM into a deb if you are not able to find out how to create deb packages directly.
Building from source is going to be inescapable, unless you can find some repository with a thread safe build of PHP, with a complete build environment. To that end, the information http://pthreads.org/building may be of use to you. It really isn't that hard to build PHP, nor does it take many hours, on modern hardware you can have a build in less than a minute. You can and should take the opportunity to trim the fat from your installation.
On a side note, the article you reference about PHP not being thread safe is from 2008, it's very wrong. The core is thread safe, there are a few extensions that are inherently unsafe ( not abstracted badly, but fundamentally unsuitable ).
看来,Ubuntu的没有一个包在官方仓库的线程安全的PHP。 并行线程扩展需要ZTS。 因此,你有两个选择:
- 自己编译:
- 找到一个.deb软件包的地方,其他Debian的系统的需要如仓库。
我编译和使用“checkintsall”应用程序包的它自己。 因此,APT会需要跟踪的PHP版本的能力。 我也会为一个包ZTS PHP要求规范。