Ответ 1
В Windows
Вы не можете установить расширение pcntl
в Windows. В соответствии с документацией PHP:
Примечание. Это расширение недоступно на платформах Windows.
Попробуйте использовать Vagrant или обычную виртуальную машину с дистрибутивами Linux, такими как Ubuntu, Debian или Mint.
В UNIX
Сначала введите в командной строке свою домашнюю директорию:
mkdir php
cd php
apt-get source php5
cd php5-(WHATEVER_RELEASE)/ext/pcntl
phpize
./configure
make
Затем сделайте это:
cp modules/pcntl.so /usr/lib/php5/WHEVER_YOUR_SO_FILES_ARE/
echo "extension=pcntl.so" > /etc/php5/conf.d/pcntl.ini
Закончено!
На Mac
Taken from fooobar.com/questions/198621/...!
Есть способ компилировать PCNTL как расширение и связать его с существующей сборкой PHP, но он немного углублен.
Я делаю следующее на Mac OSX Snow Leopard (64 бита), с MAMP и PHP версии 5.3.6. Не забудьте изменить номера версий PHP в следующих строках, если у вас они другие!
Обратите внимание, что требуется make
, который не установлен по умолчанию в Mac OSX. Вам нужно установить это через инструменты разработчика Mac, http://developer.apple.com/unix/
Сначала загрузите tar-код исходного кода PHP, который соответствует версии, которую вы используете в MAMP (например, у меня 5.3.6), что вы можете сделать на http://www.php.net/releases/. Untar и CD для php- [версия]/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
Затем вам нужно запустить phpize
в каталоге pcntl, который является двоичным файлом, который поставляется с 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
Затем мы можем запустить ./configure
и make
, чтобы построить наш общий объект:
pcntl$ ./configure
pcntl$ make
Это помещает файл с именем pcntl.so
в каталог модулей. Скопируйте этот файл в каталог расширений MAMP PHP:
pcntl$ cp modules/pcntl.so /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/
Наконец, отредактируйте INI файл PHP, добавив в него расширение:
$ 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
Если вы видите это, это сработало!
Полезные ресурсы
Для Windows:
Для операционных систем UNIX:
Для Mac:
- Как включить расширение управления процессом (PCNTL) в PHP MAMP?
- https://serverfault.com/questions/158113/installing-pcntl-module-for-php-without-recompiling
Другая информация: