如何在MAMP上启用pthreads

时间:2014-03-06 18:25:05

标签: php macos pthreads

我正在使用带有OS X Mavericks的Mac,并在MAMP中运行php脚本。我正在运行的一些php脚本需要使用pthreads

任何人都可以提供有关在Mac上安装或启用pthread的分步说明吗?

我已经广泛搜索过,并且发现了很少甚至没有关于此的文档。我所发现的只是我可能或者可能不需要从源代码重新编译php,或者只是向php.ini添加几个标志,或者我可以只使用pecl等。在终端中,我尝试pecl install pthreads并收到此错误:

无法安装,php_dir for channel“pecl.php.net”不能被当前用户写入

此时我几乎迷路了。如果可能的话,我想避免使用WAMP切换到我的Windows机器。

1 个答案:

答案 0 :(得分:6)

我不是Mac用户,但Mac和unix的构建过程是相同的,所以我可以帮助你。

配置当前安装:

  

无法安装,php_dir for channel“pecl.php.net”不能被当前用户写入

这就是pecl安装失败的原因,也许检查php_dir的配置。

您可以使用以下方法确定设置的值:

  

pecl config-get php_dir

我不熟悉MAMP,但可能就是你没有PHP的Thread Safe版本。

您可以通过以下方式确定:

  

php -i | grep线程

你应该期待:

  

线程安全=>启用

如果您启用了线程安全,则应该修复php_dir上的权限将解决您的问题。

如果不这样做,则必须重新构建或从其他来源安装PHP的线程安全版本。

建立自己

最后一个选择是建立自己,因为这意味着你会错过上游提供的更新,虽然我不太熟悉,不知道是否有一个维护良好的线程安全版本,我会假设那里是

要自己构建,您需要使用新的安装覆盖当前安装,将源代码下载到PHP以获得所需的版本(推荐5.5+,最新稳定,最好是所有时间)。

已启用分机

您需要确定为当前版本启用了哪些扩展,并确定要在新版本中启用哪些版本。

确定启用了哪些扩展程序:

  

php -m

记下这些:

  

php -m>启用的扩展

配置构建

要将构建配置为线程安全,请使用以下配置选项:

  

- 使能维护​​者-ZTS

您需要设置新安装的前缀以匹配旧版本:

  

- 前缀= /旧/前缀

如果您当前的php二进制文件位于/ usr / local / bin / php,则前缀为/ usr / local。 如果您当前的php二进制文件位于/ usr / bin / php,则前缀为/ usr。

您还需要匹配当前的构建配置目录和扫描目录设置:

  

- 与 - 配置文件中路径= /旧/配置/路径

如果您当前的php.ini位于/usr/lib/php.ini,那么路径为/ usr / lib 如果您当前的php.ini位于/etc/php.ini,则路径为/ etc

例如,如果您在启动时使用扫描目录,则可以使用目录/etc/php.d

  

- 与 - 配置文件中 - 扫描 - DIR =的/ etc / php.d

如果您当前的扫描目录是/etc/php.d,那么目录是/etc/php.d

要配置扩展,引用您在开头创建的列表,请使用以下命令:

  

./ configure --help

找出开关启用您选择的扩展程序。如果列表中有扩展名为pecl,则可以使用pecl命令在构建完成后安装这些扩展。

一般来说:

  • --enable-extname:对外部库没有依赖性
  • --with-extname:依赖于外部库

进行构建

configure之后我们必须运行make,如果您有多个处理器或核心,则可能需要使用多个作业:

  

make -j8

允许make并行运行(最多8个作业),这大大加快了构建速度。使用与核心一样多的工作。

make期间,如果发生故障,很明显失败与之相关,如果您能发现库的名称(通常是导致失败的扩展名称有帮助),那么您可以通常通过安装导致失败的库的开发包来解决错误。

开发包中包含头文件和/或静态库,通常情况下,包维护者会从普通包中省略这些内容以节省重量,因此您可以安装libxml2包但不具有头文件。

安装Build

make完成后,您的构建就可以安装了,请确保您拥有前缀的权限并执行

  

make install

Pecl Extensions

您现在应该可以使用

安装所需的PECL扩展
  

pecl install extname

并行线程

您现在可以使用PECL或github安装:

  

pecl install pthreads