Tengo MAMP y necesito habilitar -pcntl
en mi instalación actual de MAMP. ¿Cómo puedo hacerlo?cómo habilitar la extensión de control de proceso (PCNTL) en PHP MAMP?
Gracias por su ayuda.
Tengo MAMP y necesito habilitar -pcntl
en mi instalación actual de MAMP. ¿Cómo puedo hacerlo?cómo habilitar la extensión de control de proceso (PCNTL) en PHP MAMP?
Gracias por su ayuda.
Hay una forma de compilar PCNTL como extensión y vincularlo a una versión de PHP existente, pero es un poco 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 make
es necesario, que no está instalado por defecto en Mac OSX. Es necesario instalar esto a través de herramientas para desarrolladores de Mac, http://developer.apple.com/unix/
En primer lugar, descargar un alquitrán del código fuente PHP que coincide con la versión que está utilizando en MAMP (por ejemplo, la mía es 5.3.6), que se puede hacer en http://www.php.net/releases/ . Untar y CD para 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
A continuación, deberá 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 grupo de archivos que se necesitan para preparar una extensión para la compilación.
Ahora necesitamos agregar algunos indicadores para indicarle que compile la biblioteca con una arquitectura dual de 32 bits y 64 bits, ya que el PHP de MAMP se ha creado de esta manera. Si no lo hace, 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
Entonces podemos ejecutar ./configure
make
y para construir nuestro objeto compartido:
pcntl$ ./configure
pcntl$ make
Esto pone un archivo llamado pcntl.so
en el directorio de módulos . Copiar este archivo en el 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/
Por último, 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 ahora debe estar habilitado. Para comprobar si se ha agregado, simplemente ejecute:
$ /Applications/MAMP/bin/php/php5.3.6/bin/php --ri pcntl
pcntl
pcntl support => enabled
Si ve eso, ¡ha funcionado! Si algo salió mal, puede eliminar el archivo pcntl.so
del directorio de extensiones PHP de MAMP, eliminar la configuración INI y volver a intentarlo.
Solo para hacer mi vida más fácil, hice un script from the other post. Lo usé para agregar las extensiones pcntl, sysvmsg, sysvshm, sysvsem y otras a MAMP. Para usar cd en el directorio de extensión o pasar el directorio como un argumento para el 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}"
Si tiene 'cerveza' instalado en su MAC, entonces debería ser capaz de hacer:
brew install php53-pcntl
No soy experto en MAMP sin embargo.
==== ==== EDITAR (En respuesta a estar abajo votó)
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!
No existe tal fórmula de elaboración –
Sí lo hace .. Debe investigar mejor antes de votar. –
esto depende de la versión BREW de PHP que se está instalando - parece que no funciona bien con MAMP - que fue la pregunta original –
He resuelto el problema mediante el uso de MacPorts.
ejecutó el comando:
sudo port install php5-pcntl
Proporcione más explicaciones a su respuesta. –
me encontré con algunas instrucciones ligeramente diferentes que trabajaron para Yosemite y Mamp usando PHP 5.6.2. No se encontraron instrucciones 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
Esta solución también funciona para PHP estándar que viene con Snow Leopard^_^ – zundr
si se encuentra con 'error: 'PHP_FE_END' no declarado aquí (no en una función)' después de correr 'make', reemplace todas las apariciones de' PHP_FE_END' en pcntl.c con '{NULL, NULL, NULL}'. –
Cualquier pista, estoy obteniendo Zend/zend_signal.h no existe. Cuando lo revisé, existe. – doNotCheckMyBlog