Lina
tengo MÁMPARA y necesito habilitar -pcntl
en mi instalación actual de MAMP.
¿Como lo puedo hacer?
jon cairns
Hay una forma de compilar PCNTL como una extensión y vincularla a una compilación de PHP existente, pero es un poco profunda.
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 el suyo es diferente!
Tenga en cuenta que make
es obligatorio, que no está instalado 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, la mía es 5.3.6), lo cual puede hacer en http://www.php.net/releases/. Descomprimir y CD a php-[version]/ext/pcntlp.ej:
$ 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, debe 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 se necesitan para preparar una extensión para compilar.
Ahora necesitamos agregar algunas banderas para decirle que compile la biblioteca con una arquitectura dual de 32 bits y 64 bits, ya que MAMP PHP se ha construido de esta manera. Si no hace 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
Entonces podemos ejecutar ./configure
y make
para construir nuestro objeto compartido:
pcntl$ ./configure
pcntl$ make
Esto pone un archivo llamado pcntl.so
en el módulos directorio. Copie 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/
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 ahora debería estar 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 ha ido mal, simplemente puede eliminar el pcntl.so
archivo del directorio de extensiones MAMP PHP y elimine la configuración INI, e intente nuevamente.
-
Esta solución también funciona para PHP estándar que viene con Snow Leopard ^_^
– zundr
16 de diciembre de 2011 a las 17:13
-
si te encuentras
error: ‘PHP_FE_END’ undeclared here (not in a function)
despues de corrermake
reemplaza todas las apariciones dePHP_FE_END
en pcntl.c con{NULL,NULL,NULL}
.– Mateo
22 de marzo de 2012 a las 2:35
-
Cualquier pista, obtengo que Zend/zend_signal.h no existe. Cuando comprobé que existe.
– TeaCupApp
25 de septiembre de 2012 a las 6:20
-
Si tiene varias versiones de php en su sistema (como es el caso de Lion), es posible que deba especificar el
php-config
ubicación cuando en el./configure
paso. Eso se verá algo como:./configure --with-php-config=/Applications/MAMP/bin/php/php5.4.10/bin/php-config
– jverdi
18 de junio de 2013 a las 1:48
-
@kyle MAMP PHP y CLI PHP usan diferentes INI, así que verifique que la extensión esté habilitada en ambos.
-Jon Cairns
1 de noviembre de 2016 a las 9:37
ian lewis
Si tiene ‘brew’ instalado en su MAC, entonces debería poder hacer:
preparar la instalación de php53-pcntl
Sin embargo, no soy un experto en MAMP.
==== EDITAR ==== (En respuesta a la votación negativa)
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 preparación
– Bob Gregor
19 de junio de 2013 a las 20:55
-
Sí, lo hace. Debe investigar mejor antes de votar negativamente.
–Ian Lewis
20 de junio de 2013 a las 8:33
-
esto depende de la versión BREW de PHP que se esté instalando; no parece funcionar bien con MAMP, que era la pregunta original
– Bob Gregor
5 de julio de 2013 a las 18:08
-
Funciona bien con mi versión MAMP (con php 5.6.1), aparte de que php56-pcntl tiene un poco de errores en este momento y brew no puede instalarlo.
– Mario Diana
28 de enero de 2015 a las 15:44
-
Esto funciona con MAMP. solo instala
phpXX-pcntl
primero, y luego copiar elpcntl.so
a la carpeta correcta (Verifique la salida de brew para la ruta correcta):cp /usr/local/Cellar/php71-pcntl/7.1.8_15/pcntl.so /Applications/MAMP/bin/php/php7.1.1/lib/php/extensions/no-debug-non-zts-20160303/
– Miguel
31 de agosto de 2017 a las 7:03
rp90
Solo para hacerme la vida más fácil, hice un guión de la otra publicación. Lo usé para agregar extensiones pcntl, sysvmsg, sysvshm, sysvsem y otras a MAMP. Para usar cd en el directorio de extensiones o pasar el directorio como 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}"
padawan
Resolví el problema usando MacPorts.
Ejecutó el comando:
sudo port install php5-pcntl
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
Comunidad
- descargar php desde https://www.php.net/releases/
tar -xzvf php-7.3.8.tar.gz
(Nombraremos la carpeta de salidaPhpSrcFolder
)- Asegúrese de tener el directorio bin MAMP en su ruta =>
echo $PATH
. Necesitará las herramientas adicionales que tiene para hacer esto. (Pase al paso 5 si ya tiene el contenedor de mamp en su $PATH) - puede agregar el contenedor de mamp a su ruta de la siguiente manera, primero grep la versión de php utilizada por mamp de
~/.profile
(PD: Mamp agrega alias a php en este último), luego agregamos el contenedor de mamp a PATH de acuerdo con la versión utilizada.
exportar PHP_VERSION=
grep "alias php" ~/.profile | cut -d"/" -f6 | cut -c4-
# apunta a tu carpeta php.ini para usar la misma configuración de php
export PHPRC=”/Library/Application Support/appsolute/MAMP PRO/conf/”
exportar RUTA=/Aplicaciones/MAMP/bin/php/php$PHP_VERSION/bin:$RUTA
PD: cerrar y volver a abrir terminal
-
Copiar
PhpSrcFolder
/ext/pcntl a/Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl
-
Entrar en
/Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl
y luego ejecuta elphpize
dominio. Tenga en cuenta que también necesitará tener Xcode y las herramientas relacionadas instaladas. -
A continuación, debería poder ejecutar
./configure && make && make install
. Esto construirá la extensión en/Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl/modules/pcntl.so
cópialo y pégalo en/Applications/MAMP/bin/php/php7.3.8/lib/php/extensions/no-debug-non-zts-20180731/pcntl.so
-
Ahora, edite php.ini y habilite el módulo como lo haría con cualquier otra extensión. obtener ruta de
php.ini
cargado por correrwhich php
para mi es :/Library/Application Support/appsolute/MAMP PRO/conf/php7.3.8.ini
y vuelva a comprobar que tiene la extensión pcntl:
[pcntl]
extensión=pcntl.so