如何在PHP MAMP中启用过程控制扩展(PCNTL)?
我有 MAMP,我需要在当前的 MAMP 安装上启用。我该怎么做?-pcntl
感谢您的帮助。
我有 MAMP,我需要在当前的 MAMP 安装上启用。我该怎么做?-pcntl
感谢您的帮助。
有一种方法可以将PCNTL编译为扩展并将其链接到现有的PHP构建中,但它有点深入。
我在Mac OSX Snow Leopard(64bit)上做了以下操作,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/ 执行此操作。Untar 和 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 目录中运行,该目录是 MAMP 附带的二进制文件:phpize
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
然后,我们可以运行并构建我们的共享对象:./configure
make
pcntl$ ./configure
pcntl$ make
这会将调用的文件放在模块目录中。将此文件复制到 MAMP 的 PHP 扩展目录:pcntl.so
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 扩展目录中删除该文件并删除 INI 设置,然后重试。pcntl.so
如果您在MAC上安装了“brew”,那么您应该能够执行以下操作:
brew install php53-pcntl
我不是MAMP方面的专家。
==== 编辑 ==== (回应被否决投票)
Ian-Lewiss-MacBook-Pro:~ ianlewis$ brew install php53-pcntl
Warning: php53-pcntl-5.3.25 already installed
Ian-Lewiss-MacBook-Pro:~ ianlewis$ brew info php53-pcntl
php53-pcntl: stable 5.3.25
http://php.net/manual/en/book.pcntl.php
/usr/local/Cellar/php53-pcntl/5.3.23 (3 files, 32K)
Built from source
/usr/local/Cellar/php53-pcntl/5.3.25 (3 files, 32K) *
Built from source
https://github.com/josegonzalez/homebrew-php/commits/master/Formula/php53-pcntl.rb
==> Dependencies
Build: autoconf
Required: php53
==> Options
--without-config-file
Do not add ext-pcntl.ini to /usr/local/etc/php/5.3/conf.d
--without-homebrew-php
Ignore homebrew PHP and use default instead
==> Caveats
To finish installing pcntl for PHP 5.3:
* /usr/local/etc/php/5.3/conf.d/ext-pcntl.ini was created,
do not forget to remove it upon extension removal.
* Restart your webserver.
* Write a PHP page that calls "phpinfo();"
* Load it in a browser and look for the info on the pcntl module.
* If you see it, you have been successful!