php - 如何在 PHP MAMP 中启用进程控制扩展 (PCNTL)?

标签 php mamp pcntl


我有 MAMP,我需要在我当前的 MAMP 安装上启用 -pcntl。 我该怎么做?

感谢您的帮助。

最佳答案

有一种方法可以将 PCNTL 编译为扩展并将其链接到现有的 PHP 构建,但它有点深入。

我在 Mac OSX Snow Leopard(64 位)上使用 MAMP 和 PHP 版本 5.3.6 执行以下操作。如果您的版本不同,请记住在以下几行中更改 PHP 版本号!

请注意 make 是必需的,在 Mac OSX 上默认不安装。您需要通过 Mac 开发工具安装它,http://developer.apple.com/unix/

首先,下载与您在 MAMP 中使用的版本相匹配的 PHP 源代码的 tar(例如,我的是 5.3.6),您可以在 http://www.php.net/releases/ .解压并 CD 到 php-[version]/ext/pcntl,例如:

$ wget http://museum.php.net/php5/php-5.3.6.tar.gz
$ tar xvf php-5.3.6.tar.gz
$ cd php-5.3.6/ext/pcntl

然后需要在pcntl目录下运行phpize,这是MAMP自带的二进制文件:

pcntl$ /Applications/MAMP/bin/php/php5.3.6/bin/phpize

这会创建一堆文件,这些文件是为编译准备扩展所需的。

我们现在需要添加一些标志来告诉它编译具有双 32 位和 64 位架构的库,因为 MAMP PHP 就是这样构建的。如果不这样做,编译后的共享对象将不起作用。

pcntl$ MACOSX_DEPLOYMENT_TARGET=10.6
pcntl$ CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"
pcntl$ CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
pcntl$ CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
pcntl$ LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"
pcntl$ export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET

然后我们可以运行 ./configuremake 来构建我们的共享对象:

pcntl$ ./configure
pcntl$ make

这会在 modules 目录中放置一个名为 pcntl.so 的文件。将此文件复制到 MAMP 的 PHP 扩展目录:

pcntl$ cp modules/pcntl.so /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/

最后,编辑 PHP INI 文件以包含扩展名:

$ echo "extension=pcntl.so" >> /Applications/MAMP/bin/php/php5.3.6/conf/php.ini

现在应该启用 PCNTL。要检查是否已添加,只需运行:

$ /Applications/MAMP/bin/php/php5.3.6/bin/php --ri pcntl

pcntl

pcntl support => enabled

如果你看到了,那就成功了!如果出现任何问题,您可以从 MAMP PHP 扩展目录中删除 pcntl.so 文件并删除 INI 设置,然后重试。

关于php - 如何在 PHP MAMP 中启用进程控制扩展 (PCNTL)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5230255/

相关文章:

php - 从字符串中提取美元金额 - PHP 中的正则表达式

php - setlocale() 在 MacOS 上使用 MAMP 在本地主机上不工作

javascript - Wordpress 上带有授权 header (CORS) 的 HTTP 发布

php - 为什么 PHP pcntl_fork 不能并行运行两个以上的子进程?

php - 我如何在不等待第一个响应的情况下同时调用两个 api?

php - 获取最大值的日期和时间

php - 从 php 文件返回 true/false 到 javascript

php - 通过从具有公共(public)列的两个表中选择数据来未定义索引

php从U盘修改文件名

php - APC 与 pcntl_fork() 一起使用时可以提高 CLI 脚本的速度吗?