J'ai MAMP et je dois activer -pcntl
sur mon installation actuelle de MAMP. Comment faire?
Merci de votre aide.
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).
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!
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}"
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
J'ai résolu le problème en utilisant MacPorts.
Exécutez la commande:
Sudo port install php5-pcntl
tar -xzvf php-7.3.8.tar.gz
(Nous nommerons le dossier généré PhpSrcFolder
)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)~/.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
Copiez PhpSrcFolder
/ext/pcntl dans /Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl
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.
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
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 php
pour 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