如何在MAMP上启用pthreads

Leo*_*los 1 php macos pthreads

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

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

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

无法安装,通道"pecl.php.net"的php_dir不能被当前用户写入

我现在几乎迷失了.如果可能的话,我想避免使用WAMP切换到我的Windows机器.

Joe*_*ins 6

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

要配置当前安装:

无法安装,通道"pecl.php.net"的php_dir不能被当前用户写入

这就是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> enabled-extensions

配置构建

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

--enable-维护者,ZTS

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

前缀= /旧/前缀

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

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

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

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

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

--with-配置文件中 - 扫描 - 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扩展

您现在应该能够安装所需的PECL扩展

pecl安装extname

并行线程

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

pecl安装pthreads