Wie kann ich die Prozesssteuerungserweiterung (PCNTL) in PHP MAMP aktivieren?

Lesezeit: 8 Minuten

Linas Benutzeravatar
Lina

Ich habe MAMP und ich muss aktivieren -pcntl auf meiner aktuellen MAMP-Installation.

Wie kann ich das tun?

Benutzeravatar von Jon Cairns
Jon Cairns

Es gibt eine Möglichkeit, PCNTL als Erweiterung zu kompilieren und mit einem vorhandenen PHP-Build zu verknüpfen, aber es ist ein bisschen ausführlich.

Ich mache folgendes am Mac OS X v10.6 (Snow Leopard) (64 Bit), mit MAMP und PHP Version 5.3.6. Denken Sie daran, die PHP-Versionsnummern in den folgenden Zeilen zu ändern, wenn Ihre anders ist!

Bitte beachte, dass make ist erforderlichdas unter Mac OS X nicht standardmäßig installiert ist. Sie müssen es über installieren Mac-Entwicklertools.

Laden Sie zunächst ein Tar des PHP-Quellcodes herunter, das der Version entspricht, die Sie in MAMP verwenden (z. B. meine ist 5.3.6), was Sie unter tun können Nicht unterstützte historische Versionen. Entpacken und auf CD php-[version]/ext/pcntlz.B:

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

Dann musst du laufen phpize im pcntl-Verzeichnis, das eine Binärdatei ist, die mit MAMP geliefert wird:

cd php-5.3.6/ext/pcntl
/Applications/MAMP/bin/php/php5.3.6/bin/phpize

Dadurch wird eine Reihe von Dateien erstellt, die zum Vorbereiten einer Erweiterung zum Kompilieren benötigt werden.

Wir müssen jetzt einige Flags hinzufügen, um es anzuweisen, die Bibliothek mit dualer 32-Bit- und 64-Bit-Architektur zu kompilieren, da MAMP PHP auf diese Weise erstellt wurde. Wenn Sie dies nicht tun, funktionieren die kompilierten gemeinsam genutzten Objekte nicht.

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

Dann können wir laufen ./configure und make um unser gemeinsames Objekt zu erstellen:

./configure
make

Dadurch wird eine Datei namens pcntl.so in dem Module Verzeichnis. Kopieren Sie diese Datei in das PHP-Erweiterungsverzeichnis Ihres MAMP:

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

Bearbeiten Sie abschließend die PHP-INI-Datei, um die Erweiterung einzufügen:

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

PCNTL sollte jetzt aktiviert sein. Um zu überprüfen, ob es hinzugefügt wurde, führen Sie einfach Folgendes aus:

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

Ausgabe:

pcntl

pcntl support => enabled

Wenn Sie das sehen, hat es funktioniert! Wenn etwas schief gelaufen ist, können Sie die einfach entfernen pcntl.so Datei aus dem MAMP-PHP-Erweiterungsverzeichnis, entfernen Sie die INI-Einstellung und versuchen Sie es erneut.

  • Diese Lösung funktioniert auch für Standard-PHP, das mit Snow Leopard ^_^ geliefert wird

    – zundr

    16. Dezember 2011 um 17:13 Uhr


  • Wenn Sie begegnen error: ‘PHP_FE_END’ undeclared here (not in a function) nach dem Rennen makeersetzen Sie alle Vorkommen von PHP_FE_END in pcntl.c mit {NULL,NULL,NULL}.

    – Matthew

    22. März 2012 um 2:35 Uhr

  • Irgendein Hinweis, ich bekomme Zend/zend_signal.h existiert nicht. Als ich es überprüft habe, existiert es.

    – TeaCupApp

    25. September 2012 um 6:20 Uhr

  • Wenn Sie mehrere PHP-Versionen auf Ihrem System haben (wie es bei Lion der Fall ist), müssen Sie möglicherweise die php-config Ort, wenn auf der ./configure Schritt. Das wird in etwa so aussehen: ./configure --with-php-config=/Applications/MAMP/bin/php/php5.4.10/bin/php-config

    – jverdi

    18. Juni 2013 um 1:48 Uhr


  • @kyle MAMP PHP und CLI PHP verwenden unterschiedliche INIs, überprüfen Sie also, ob die Erweiterung in beiden aktiviert ist.

    – Jon Cairns

    1. November 2016 um 9:37 Uhr

Benutzeravatar von Ian Lewis
Ian Lewis

Wenn Sie haben Hausgemacht (ausführbar brew) auf Ihrem Mac installiert haben, sollten Sie Folgendes tun können:

brew install php53-pcntl

Ich bin jedoch kein Experte für MAMP.

brew install php53-pcntl
brew info php53-pcntl

Ausgabe:

Warning: php53-pcntl-5.3.25 already installed

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!

  • Es gibt keine solche Brühformel

    – Bob Gregor

    19. Juni 2013 um 20:55 Uhr

  • Ja, das tut es. Sie müssen besser recherchieren, bevor Sie abstimmen.

    – Ian Lewis

    20. Juni 2013 um 8:33 Uhr

  • Dies hängt von der installierten BREW-Version von PHP ab – es scheint nicht gut mit MAMP zu funktionieren – was die ursprüngliche Frage war

    – Bob Gregor

    5. Juli 2013 um 18:08 Uhr

  • Es funktioniert gut mit meiner MAMP-Version (mit PHP 5.6.1), abgesehen davon, dass php56-pcntl im Moment ein bisschen fehlerhaft ist und Brew es nicht installieren kann.

    – Mario Diana

    28. Januar 2015 um 15:44 Uhr

  • Das funktioniert mit MAMP. Einfach installieren phpXX-pcntl zuerst, und dann kopieren Sie die pcntl.so in den richtigen Ordner (überprüfen Sie die Ausgabe von Brew auf den richtigen Pfad): 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/

    – Michael

    31. August 2017 um 7:03 Uhr

Benutzeravatar von rp90
rp90

Nur um mein Leben einfacher zu machen, habe ich ein Skript aus dem anderen Beitrag erstellt. Ich habe es verwendet, um die Erweiterungen pcntl, sysvmsg, sysvshm, sysvsem und andere zu MAMP hinzuzufügen. Um es zu benutzen, CD in das Erweiterungsverzeichnis oder übergeben Sie das Verzeichnis als Argument an das Skript. Beispiel: ./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}"

Benutzeravatar von padawan
padawan

Ich habe das Problem gelöst, indem ich verwendet habe MacPorts.

Ich habe den Befehl ausgeführt:

sudo port install php5-pcntl

Benutzeravatar von davydka
dawydka

Ich habe einige etwas andere Anweisungen gefunden, die für funktioniert haben Mac OS X v10.10 (Yosemite) und MAMP mit PHP 5.6.2.

Anleitung wurde hier gefunden:
Wie man Artisan Tinker in OS X 10 MAMP zum Laufen bringt

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

Benutzeravatar von Peter Mortensen
Peter Mortensen

  1. Laden Sie eine PHP-Implementierung von herunter Nicht unterstützte historische Versionen

  2. tar -xzvf php-7.3.8.tar.gz (Wir werden den ausgegebenen Ordner benennen PhpSrcFolder)

  3. Stellen Sie sicher, dass Sie das MAMP-bin-Verzeichnis in Ihrem Pfad → haben echo $PATH. Dazu benötigen Sie die zusätzlichen Werkzeuge, die es hat. (Fahren Sie mit Schritt 5 fort, wenn Sie bereits mamps Papierkorb in Ihrem $PATH haben.)

  4. Sie können MAMPs bin wie folgt zu Ihrem Pfad hinzufügen, wir suchen zuerst nach der Version von PHPs, die von MAMP verwendet wird ~/.profile (PS: MAMP add alias to php in the last), dann fügen wir den MAMP-Bin entsprechend der verwendeten Version zu PATH hinzu.

    export PHP_VERSION=`grep "alias php" ~/.profile | cut -d"/" -f6 | cut -c4-`
    \# point to your php.ini folder to use the same php setting
    export PHPRC="/Library/Application Support/appsolute/MAMP PRO/conf/"
    export PATH=/Applications/MAMP/bin/php/php$PHP_VERSION/bin:$PATH
    
    ### PS: close and reopen terminal
    
  5. Kopieren PhpSrcFolder/ext/pcntl zu /Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl

  6. Gehen in /Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl und dann die ausführen phpize Befehl. Beachten Sie, dass Sie auch Xcode und verwandte Tools installiert haben müssen.

  7. Dann solltest du laufen können ./configure && make && make install. Dadurch wird die Erweiterung eingebaut /Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl/modules/pcntl.sokopieren und einfügen /Applications/MAMP/bin/php/php7.3.8/lib/php/extensions/no-debug-non-zts-20180731/pcntl.so

  8. Bearbeiten Sie nun die php.ini und aktivieren Sie das Modul wie jede andere Erweiterung. Holen Sie sich Pfad von php.ini durch Laufen geladen which phpfür mich ist es: /Library/Application Support/appsolute/MAMP PRO/conf/php7.3.8.ini und überprüfen Sie erneut, ob es die pcntl-Erweiterung hat:

    [pcntl]
    
    extension=pcntl.so
    

1440750cookie-checkWie kann ich die Prozesssteuerungserweiterung (PCNTL) in PHP MAMP aktivieren?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy