Ich habe MAMP und ich muss aktivieren -pcntl
auf meiner aktuellen MAMP-Installation.
Wie kann ich das tun?
Lina
Ich habe MAMP und ich muss aktivieren -pcntl
auf meiner aktuellen MAMP-Installation.
Wie kann ich das tun?
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 make
ersetzen 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
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
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}"
padawan
Ich habe das Problem gelöst, indem ich verwendet habe MacPorts.
Ich habe den Befehl ausgeführt:
sudo port install php5-pcntl
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
Peter Mortensen
Laden Sie eine PHP-Implementierung von herunter Nicht unterstützte historische Versionen
tar -xzvf php-7.3.8.tar.gz
(Wir werden den ausgegebenen Ordner benennen PhpSrcFolder
)
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.)
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
Kopieren PhpSrcFolder
/ext/pcntl zu /Applications/MAMP/bin/php/php7.3.8/include/php/ext/pcntl
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.
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.so
kopieren und einfügen /Applications/MAMP/bin/php/php7.3.8/lib/php/extensions/no-debug-non-zts-20180731/pcntl.so
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 php
fü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