web-dev-qa-db-fra.com

comment activer l'extension de contrôle de processus (PCNTL) dans PHP MAMP?


J'ai MAMP et je dois activer -pcntl sur mon installation actuelle de MAMP. Comment faire?

Merci de votre aide.

30
Lina

Il existe un moyen de compiler PCNTL en tant qu'extension et de le lier à une version PHP build, mais c'est un peu en profondeur.

Je fais ce qui suit sur Mac OSX Snow Leopard (64 bits), avec MAMP et PHP version 5.3.6. N'oubliez pas de changer PHP numéros de version dans le lignes suivantes si la vôtre est différente!

Veuillez noter que make est requis, ce qui n'est pas installé par défaut sur Mac OSX. Vous devez l'installer via les outils de développement Mac, http://developer.Apple.com/unix/

Tout d'abord, téléchargez un fichier tar du code source PHP qui correspond à la version que vous utilisez dans MAMP (par exemple, la mienne est 5.3.6), que vous pouvez faire sur http: // www.php.net/releases/ . Untar et CD vers php- [version]/ext/pcntl , par exemple:

$ 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

Vous devez ensuite exécuter phpize dans le répertoire pcntl, qui est un fichier binaire fourni avec MAMP:

pcntl$ /Applications/MAMP/bin/php/php5.3.6/bin/phpize

Cela crée un tas de fichiers nécessaires à la préparation d'une extension pour la compilation.

Nous devons maintenant ajouter quelques drapeaux pour lui dire de compiler la bibliothèque avec une architecture double 32 bits et 64 bits, car le MAMP PHP a été construit de cette façon. Si vous ne le faites pas, le fichier compilé les objets partagés ne fonctionneront pas.

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

Nous pouvons alors exécuter ./configure et make pour construire notre objet partagé:

pcntl$ ./configure
pcntl$ make

Cela met un fichier appelé pcntl.so dans le répertoire des modules . Copiez ce fichier dans le répertoire des extensions PHP de PHP:

pcntl$ cp modules/pcntl.so /Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/

Enfin, éditez le fichier PHP INI pour inclure l'extension:

$ echo "extension=pcntl.so" >> /Applications/MAMP/bin/php/php5.3.6/conf/php.ini

PCNTL devrait maintenant être activé. Pour vérifier s'il a été ajouté, lancez simplement:

$ /Applications/MAMP/bin/php/php5.3.6/bin/php --ri pcntl

pcntl

pcntl support => enabled

Si vous voyez ça, ça marche! En cas de problème, vous pouvez simplement supprimer le pcntl.so fichier du répertoire d'extensions MAMP PHP et supprimez le paramètre INI, puis réessayez).

59
Jon Cairns

Si vous avez installé "brew" sur votre MAC, vous devriez pouvoir:

installer brew php53-pcntl

Je ne suis cependant pas un expert du MAMP.

==== EDIT ==== (En réponse au vote négatif)

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!
5
Ian Lewis

Juste pour me faciliter la vie, j'ai fait un script de l'autre post . Je l'ai utilisé pour ajouter des extensions pcntl, sysvmsg, sysvshm, sysvsem et autres à MAMP. Pour utiliser cd dans le répertoire d'extension ou passer le répertoire en argument au script. Exemple ./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}"
3
rp90

J'ai trouvé des instructions légèrement différentes qui fonctionnaient pour Yosemite et Mamp en utilisant php 5.6.2. Les instructions ont été trouvées ici: 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
2
davydka

J'ai résolu le problème en utilisant MacPorts.

Exécutez la commande:

Sudo port install php5-pcntl
2
padawan
  1. télécharger php depuis https://www.php.net/releases/
  2. tar -xzvf php-7.3.8.tar.gz (Nous nommerons le dossier généré PhpSrcFolder)
  3. Assurez-vous d'avoir le répertoire bin MAMP dans votre chemin => echo $PATH. Vous aurez besoin des outils supplémentaires dont il dispose pour ce faire. (Passez à l'étape 5 si vous avez déjà le bac du mamp dans votre $ PATH)
  4. vous pouvez ajouter le bac de mamp à votre chemin comme suit, nous avons d'abord grep la version des php utilisés par mamp de ~/.profile (PS: Mamp ajoute un alias à php dans ce dernier), puis nous ajoutons le bin de mamp à PATH conformément à la version utilisée.

export PHP_VERSION = grep "alias php" ~/.profile | cut -d"/" -f6 | cut -c4-

# pointez sur votre dossier php.ini pour utiliser le même paramètre php

export PHPRC = "/ Library/Application Support/appsolute/MAMP PRO/conf /"

export PATH =/Applications/MAMP/bin/php/php $ PHP_VERSION/bin: $ PATH

PS: fermer et rouvrir le terminal

  1. Copiez PhpSrcFolder/ext/pcntl dans /Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl

  2. Allez dans /Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl, puis exécutez la commande phpize. Notez que vous devrez également installer Xcode et les outils associés.

  3. Vous devriez alors pouvoir exécuter ./configure && make && make install. Cela va construire l'extension dans /Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl/modules/pcntl.so, copiez-le et collez-le dans /Applications/MAMP/bin/php/php7.3.8/lib/php/extensions/no-debug-non-zts-20180731/pcntl.so

  4. Maintenant, éditez le php.ini et activez le module comme vous le feriez pour n'importe quelle autre extension. obtenir le chemin de php.ini chargé en exécutant which phppour moi, c'est : /Library/Application Support/appsolute/MAMP PRO/conf/php7.3.8.ini et revérifiez qu'il a l'extension pcntl:

[pcntl]

extension = pcntl.so

0