¿Cómo habilitar la extensión de control de proceso(PCNTL) en PHP MAMP?
(5)
Encontré algunas instrucciones ligeramente diferentes que funcionaron para Yosemite y Mamp usando php 5.6.2. Las instrucciones se encontraron aquí: https://www.flynsarmy.com/2015/01/get-artisan-tinker-working-osx-10-mamp/
wget http://museum.php.net/php5/php-5.6.2.tar.gz
tar -xzvf php-5.6.2.tar.gz
mv php-5.6.2 php
mkdir -p /Applications/MAMP/bin/php/php5.6.2/include
mv php /Applications/MAMP/bin/php/php5.6.2/include
cd /Applications/MAMP/bin/php/php5.6.2/include/php
./configure
MACOSX_DEPLOYMENT_TARGET=10.10
CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"
CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"
export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET
cd ext/pcntl
phpize
./configure
make
cp modules/pcntl.so /Applications/MAMP/bin/php/php5.6.2/lib/php/extensions/no-debug-non-zts-20131226
Tengo MAMP y necesito habilitar -pcntl
en mi instalación actual de MAMP. ¿Como lo puedo hacer?
Gracias por tu ayuda.
Existe una forma de compilar PCNTL como una extensión y vincularlo a una compilación PHP existente, pero es un poco más profundo.
Estoy haciendo lo siguiente en Mac OSX Snow Leopard (64 bits), con MAMP y PHP versión 5.3.6. ¡Recuerde cambiar los números de versión de PHP en las siguientes líneas si la suya es diferente!
Tenga en cuenta que se requiere make
, que no se instala de forma predeterminada en Mac OSX. Debe instalar esto a través de las herramientas de desarrollo de Mac, http://developer.apple.com/unix/
Primero, descargue un archivo tar del código fuente de PHP que coincida con la versión que está usando en MAMP (por ejemplo, el mío es 5.3.6), que puede hacer en http://www.php.net/releases/ . Untar y CD a php- [versión] / ext / pcntl , por ejemplo:
$ 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
Luego necesita ejecutar phpize
en el directorio pcntl, que es un archivo binario que viene con MAMP:
pcntl$ /Applications/MAMP/bin/php/php5.3.6/bin/phpize
Esto crea un montón de archivos que son necesarios para preparar una extensión para compilar.
Ahora necesitamos agregar algunos indicadores para indicar que compile la biblioteca con una arquitectura dual de 32 bits y 64 bits, ya que MAMP PHP se ha creado de esta manera. Si no haces esto, los objetos compartidos compilados no funcionarán.
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
Luego podemos ejecutar ./configure
y make
para construir nuestro objeto compartido:
pcntl$ ./configure
pcntl$ make
Esto coloca un archivo llamado pcntl.so
en el directorio de módulos . Copie este archivo al directorio de extensiones PHP de su MAMP:
pcntl$ cp modules/pcntl.so /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/
Finalmente, edite el archivo PHP INI para incluir la extensión:
$ echo "extension=pcntl.so" >> /Applications/MAMP/bin/php/php5.3.6/conf/php.ini
PCNTL debería estar ahora habilitado. Para verificar si se ha agregado, simplemente ejecute:
$ /Applications/MAMP/bin/php/php5.3.6/bin/php --ri pcntl
pcntl
pcntl support => enabled
Si ves eso, ha funcionado! Si algo pcntl.so
mal, puede eliminar el archivo pcntl.so
del directorio de extensiones PHP de MAMP y eliminar la configuración de INI e intentarlo de nuevo.
Resolví el problema utilizando MacPorts.
Ejecutó el comando:
sudo port install php5-pcntl
Si tiene ''brew'' instalado en su MAC, entonces debería poder hacer:
brew install php53-pcntl
Aunque no soy un experto en MAMP.
==== EDIT ==== (En respuesta a ser rechazado)
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!
Solo para hacer mi vida más fácil, hice un guión del otro post . Lo usé para agregar extensiones pcntl, sysvmsg, sysvshm, sysvsem y otros a MAMP. Para usar cd al directorio de extensión o pasar el directorio como un argumento al script. Ejemplo ./addExtension.sh php-5.3.6 / ext / pcntl
#!/bin/bash
DIR=$1
MAMP_PHP=$2
if [ -z "$DIR" ]
then
DIR=`pwd`
fi
if [ -z "$MAMP_PHP" ]
then
MAMP_PHP=''/Applications/MAMP/bin/php/php5.3.6''
fi
EXTENSION=${DIR##*/}
echo Extension: $EXTENSION
cd $DIR
eval "${MAMP_PHP}/bin/phpize"
MACOSX_DEPLOYMENT_TARGET=10.6
CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"
CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"
export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET
./configure
make
cp modules/${EXTENSION}.so "${MAMP_PHP}/lib/php/extensions/no-debug-non-zts-20090626/"
PHP_INI_PATH="${MAMP_PHP}/conf/php.ini"
sed -e "/extension=${EXTENSION}.so/ d" $PHP_INI_PATH > TMP
mv TMP $PHP_INI_PATH
echo "extension=${EXTENSION}.so" >> $PHP_INI_PATH
eval "${MAMP_PHP}/bin/php --ri ${EXTENSION}"