Ich entschuldige mich im Voraus für die möglichen n00b-Fragen. Ich versuche, die mcrypt-Erweiterung für PHP auf meinem OSX Mountain Lion-Computer zu installieren.
Die folgenden Schritte in terminal sind die, die ich bisher gemacht habe, um meine PHP -Installation durchzuführen
cd /path/to/downloaded/php-5.3.21/ext/mcrypt/
/usr/bin/phpize
./configure
cd /path/to/downloaded/php-5.3.21
./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs
make
Sudo make install
Das scheint gut zu funktionieren und installiert PHP 5.3.21 in Ordnung. Habe ich dann gemacht
Sudo nano /private/etc/php.ini
Und eingeschlossen
extension=mcrypt.so
Zusammen mit einem Apache-Neustart zeigt phpinfo () nicht, dass die mcrypt-Erweiterung geladen ist.
Ich habe dann versucht, das extension_dir in php.ini anzugeben, wieder ohne Erfolg.
Ich habe getan
locate mcrypt.so
/opt/local/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so
/usr/local/Cellar/php53-mcrypt/5.3.18/mcrypt.so
Und versuchte beide Verzeichnisse als extension_dir, ohne Erfolg.
Ich habe auch folgendes versucht, nachdem ich viel gegoogelt habe
./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs --with-mcrypt
Was scheint OK zu funktionieren, aber dann bei "make" kehrt es zurück
ext/mcrypt/mcrypt.o: No such file or directory
ext/mcrypt/mcrypt_filter.o: No such file or directory
Wieder kein Erfolg.
Was mache ich falsch? Es scheint, als ob die physische Kompilierung von mcrypt.so nicht geschieht oder falsch kompiliert wird, da ich vermuten würde, dass eine andere mcrypt.so unter locate gefunden wird?
Jemand bitte helfen Ich habe Seiten auf Seiten von Google-Suchen ohne Erfolg durchgegangen!
Ich neige dazu, Homebrew auf einem Mac zu verwenden. Es wird alles für Sie installieren und konfigurieren.
http://mxcl.github.com/homebrew/
Dann sollten Sie in der Lage sein, es mit brew install mcrypt php53-mcrypt
zu installieren und es wird Just Work (tm) funktionieren.
Sie können den 53
durch die von Ihnen verwendete Version von PHP ersetzen, z. B. php56-mcrypt
oder php70-mcrypt
. Wenn Sie sich nicht sicher sind, verwenden Sie brew search php
.
Denken Sie auch daran, wenn Sie den eingebauten Mac PHP verwenden, der in /usr/bin
installiert ist, können Sie sehen, welchen PHP-Code Sie mit which php
am Terminal verwenden, und der Pfad wird zurückgegeben.
Ich habe das gerade auf Mountain Lion durchgemacht. Homebrew blockierte libiconv, was seiner Meinung nach vermisst wurde, aber eigentlich auf dem neuesten Stand war. Nach einer Stunde des Versuchens, libiconv zu erkennen, gab ich es auf und installierte es auf die alte Art und Weise, was fünf Minuten dauerte ...
(download your php version)
$ wget http://www.php.net/get/php-5.3.21.tar.gz/from/a/mirror
$ tar -xvzf php-5.3.21.tar.gz
$ cd php-5.3.21/ext/mcrypt
$ phpize
$ ./configure
$ make
$ make test
$ Sudo make install
mcrypt.so ist jetzt in Ihrem PHP ext-Verzeichnis (in meinem Fall /usr/lib/php/extensions/no-debug-non-zts-20090626/
), jetzt müssen Sie die php.ini als Modul hinzufügen
$ vi /etc/php.ini
$ (insert) extension=mcrypt.so
$ Sudo apachectl restart
Fertig - kein Aufguss nötig HTH jemand.
mcrypt
ohne die Verwendung von port
oder brew
installierenHinweis: Diese Anweisungen sind lang, weil sie gründlich sein sollen. Der Vorgang ist eigentlich recht unkompliziert. Wenn Sie ein -Optimist sind, können Sie zur bauen, um die mcrypt-Erweiterung aufzubauen) Abschnitt, aber Sie können die Fehler, die ich gemacht habe, sehr gut sehen und mir sagen, dass
autoconf
undlibmcrypt
zuerst installiert werden müssen.
Ich habe dies gerade bei einer Neuinstallation von OSX 10.9 durchlaufen. Die Lösung, die für mich funktionierte, war sehr nahe an der von ckm - Ich schließe ihre Schritte ebenso wie meine eigenen vollständig ein, zur Vollständigkeit. Mein Hauptziel (außer "mit mcrypt
") war es, die Installation so auszuführen, dass das System insgesamt am wenigsten beeinträchtigt wird. Das bedeutet, Dinge manuell auszuführen (keine port
, keine brew
)
Um Dinge manuell auszuführen, benötigen Sie zunächst einige Abhängigkeiten: eine für das Erstellen von PHP - Modulen und eine andere für mcrypt
. Dies sind autoconf
und libmcrypt
, von denen Sie beide möglicherweise bereits haben, aber keine davon wird eine Neuinstallation von OSX 10.9 haben.
Autoconf (mangels einer besseren Beschreibung) wird verwendet, um nicht ziemlich unterschiedlichen, aber immer noch sehr unterschiedlichen Systemen mitzuteilen, wie Dinge kompiliert werden sollen. Es erlaubt Ihnen, die gleichen grundlegenden Befehle zum Erstellen von Modulen unter Linux zu verwenden, wie Sie es beispielsweise unter OSX trotz unterschiedlicher Dateisystemhierarchien usw. tun würden. Ich habe die von Ares auf StackOverflow beschriebene Methode verwendet Ich werde mich hier zur Vollständigkeit reproduzieren. Dieser ist sehr einfach:
$ mkdir -p ~/mcrypt/dependencies/autoconf
$ cd ~/mcrypt/dependencies/autoconf
$ curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
$ tar xzf autoconf-latest.tar.gz
$ cd autoconf-*/
$ ./configure --prefix=/usr/local
$ make
$ Sudo make install
Überprüfen Sie als Nächstes die Installation, indem Sie Folgendes ausführen:
$ which autoconf
die sollte /usr/local/bin/autoconf
zurückgeben
Als Nächstes benötigen Sie libmcrypt
, um den Kern der Erweiterung mcrypt
anzugeben (die Erweiterung selbst ist eine Bereitstellung einer PHP - Schnittstelle in dieser Bibliothek). Die Methode, die ich verwendete, basierte auf der hier beschriebenen hier , aber ich habe versucht, die Dinge so gut wie möglich zu vereinfachen:
Laden Sie zunächst die libmcrypt
-Quelle herunter, die unter SourceForge verfügbar ist und ab dem Zeitpunkt dieses Schreibens verfügbar ist, insbesondere unter:
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download
Sie müssen durch die standardmäßigen SourceForge-Hoops springen, um den Download-Link zu erhalten. Sobald Sie ihn jedoch haben, können Sie ihn an etwas wie das folgende weitergeben:
$ mkdir -p ~/mcrypt/dependencies/libmcrypt
$ cd ~/mcrypt/dependencies/libmcrypt
$ curl -L -o libmcrypt.tar.bz2 '<SourceForge direct link URL>'
$ tar xjf libmcrypt.tar.bz2
$ cd libmcrypt-*/
$ ./configure
$ make
$ Sudo make install
Die einzige Möglichkeit, zu überprüfen, ob dies funktioniert hat, ist über den Schritt ./configure
für die Erweiterung mcrypt
selbst (unten).
Dies ist unser eigentliches Ziel. Hoffentlich ist der kurze Einstieg in die Hölle der Abhängigkeit jetzt vorbei.
Zuerst müssen wir den Quellcode für die Erweiterung mcrypt
erhalten. Dies ist am leichtesten im Quellcode für PHP verfügbar. Also: Ermitteln Sie, welche Version des Quellcodes PHP Sie benötigen.
$ php --version # to get your PHP version
wenn Sie Glück haben, können Sie Ihre aktuelle Version von den Hauptspiegeln herunterladen. Wenn ja, können Sie Folgendes eingeben:
$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -L -o php-5.4.17.tar.bz2 http://www.php.net/get/php-5.4.17.tar.bz2/from/a/mirror
Leider war meine aktuelle Version (in diesem Fall 5.4.17) nicht verfügbar. Daher musste ich die alternativen/historischen Links unter http://downloads.php.net/stas/ verwenden (auch eine offizielle PHP Download-Site). Für diese können Sie Folgendes verwenden:
$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -LO http://downloads.php.net/stas/php-5.4.17.tar.bz2
Wieder basierend auf Ihrer aktuellen Version.
Sobald Sie es (und alle Abhängigkeiten von oben) haben, können Sie den Hauptprozess der eigentlichen Erstellung/Installation des Moduls erreichen.
$ cd ~/mcrypt/php
$ tar xjf php-*.tar.bz2
$ cd php-*/ext/mcrypt
$ phpize
$ ./configure # this is the step which fails without the above dependencies
$ make
$ make test
$ Sudo make install
Theoretisch befindet sich mcrypt.so
jetzt im Erweiterungsverzeichnis von PHP. Als Nächstes müssen wir PHP darüber informieren.
Ihre php.ini
-Datei muss aufgefordert werden, mcrypt
zu laden. In OSX 10.9 enthält es standardmäßig mcrypt
-spezifische Konfigurationsinformationen, aktiviert mcrypt
jedoch nicht, es sei denn, Sie teilen dies mit.
Die php.ini
-Datei ist standardmäßig nicht vorhanden. Die Datei /private/etc/php.ini.default
listet stattdessen die Standardkonfiguration auf und kann als gute Vorlage für die Erstellung des "True" php.ini
verwendet werden, sofern noch nicht vorhanden.
Um festzustellen, ob php.ini
bereits existiert, führen Sie Folgendes aus:
$ ls /private/etc/php.ini
Wenn ein Ergebnis vorliegt, ist es bereits vorhanden, und Sie sollten den nächsten Befehl überspringen.
Führen Sie zum Erstellen der php.ini
-Datei Folgendes aus:
$ Sudo cp /private/etc/php.ini.default /private/etc/php.ini
Als nächstes müssen Sie die Zeile hinzufügen:
extension=mcrypt.so
Irgendwo in der Datei. Ich würde empfehlen, die Datei nach ;extension=
zu durchsuchen und unmittelbar vor dem ersten Auftreten hinzuzufügen.
Danach ist die Installation und Konfiguration abgeschlossen. Sie können überprüfen, ob dies funktioniert hat, indem Sie Folgendes ausführen:
php -m | grep mcrypt
Welche sollte "mcrypt
" ausgeben und sonst nichts.
Wenn Sie PHP auf Apaches httpd
zurückgreifen, müssen Sie es erneut starten, bevor Sie die Änderungen im Web feststellen. Sie können dies über:
$ Sudo apachectl restart
Und du bist fertig.
PHP beschwert sich, wenn eine der Dateien wie mcrypt.so
mit der Syntax extension="mcrypt.so"
enthalten ist, die Datei sich jedoch nicht im extension_dir
-Pfad befindet (verwenden Sie <?php phpinfo(); ?>
oder php -i
, um dies zu überprüfen).
Außerdem erfahren Sie, welche php.ini
-Konfigurationsdatei geladen wird, damit Sie wissen, woher die Einstellungen kommen. Wenn Sie die Homebrew-Version verwenden, wird es höchstwahrscheinlich so etwas wie /usr/local/etc/php/5.4/php.ini
sein.
Notieren Sie sich den Teil, der so etwas wie "Scanne dieses Verzeichnis für zusätzliche INI-Dateien" besagt, da dies bedeutet, dass Sie einen Platz für Ihre eigene Datei haben, wie tweaks.ini
, der nach der Hauptkonfigurationsdatei geladen wird kann Änderungen vornehmen und einfach mithalten. Denken Sie auch daran, dass alle Dateien in diesem Verzeichnis in alphabetischer Reihenfolge geladen werden. Wenn Sie also adjustments.ini
mit mcrypt
-Direktiven aufgerufen haben und ein mcrypt.ini
-Code vorhanden ist, werden Ihre Einstellungen höchstwahrscheinlich überschrieben.
Eine Alternative zur Angabe von extension="mcrypt.so"
besteht darin, den vollständigen Pfad zur mcrypt.so
-Datei anzugeben. Die andere Option besteht darin, die Einstellung extension_dir
zu bearbeiten.
Auf Mavericks musste ich auch nicht machen. Ich habe eine Neuinstallation von homebrew
durchgeführt und dann den Josegonzalez-Tap hinzugefügt:
brew tap josegonzalez/homebrew-php
(Mein anderer Laptop lief mit Mountain Lion und verwendete in diesem Setup auch Homebrew.)
Nachdem Sie auf DIESES FANTASTISCHE REPO getippt haben, können Sie php
und mcrypt
folgendermaßen installieren:
brew install php54 php54-mcrypt
Ich würde dringend empfehlen, diese Route auszuprobieren, bevor Sie sie herunterladen und aus dem Quellcode erstellen. Es ist nicht schwer aus der Quelle zu bauen - aber ich möchte das nicht beibehalten. Es ist einer der Gründe, homebrew
zu verwenden - es ist ein Paket-Manager (mit einer riesigen Community).
Das Projekt homebrew
ist sehr in der Entwicklung und - wenn Sie Probleme haben, empfehle ich Ihnen, die Problemseite auszuprobieren.
Ja, Sie können es also aus dem Quellcode erstellen und das scheint jetzt eine gute Option zu sein, wenn Sie möchten, dass mcrypt funktioniert, aber Sie hassen sich vielleicht selbst dafür, dies später zu tun ...
Wenn Sie php54
nicht verwenden möchten, gibt es auch den Zweig php53
. Sie haben beim Repo einige Anweisungen, wie sie beide verwenden bzw. zwischen ihnen wechseln können.
Wenn Sie mit Homebrew noch nicht vertraut sind, sollten Sie wissen, dass Sie mit brew search php54
herausfinden, was sonst noch verfügbar ist.
php54 php54-lzf php54-snappy
php54-amqp php54-mailparse php54-solr
php54-apc php54-mcrypt php54-ssh2
php54-apcu php54-memcache php54-stats
php54-boxwood php54-memcached php54-svm
php54-chdb php54-midgard2 php54-tidy
php54-couchbase php54-mongo php54-timezonedb
php54-dbase php54-msgpack php54-tokyotyrant
php54-ev php54-mysqlnd_ms php54-twig
php54-gearman php54-oauth php54-uploadprogress
php54-geoip php54-opcache php54-uuid
php54-gmagick php54-parsekit php54-varnish
php54-graphdat php54-pcntl php54-wbxml
php54-http php54-pdflib php54-xcache
php54-igbinary php54-phalcon php54-xdebug
php54-imagick php54-proctitle php54-xhgui
php54-inclued php54-pspell php54-xhp
php54-intl php54-pthreads php54-xhprof
php54-ioncubeloader php54-raphf php54-xmldiff
php54-jsmin php54-redis php54-yac
php54-judy php54-riak php54-yaf
php54-leveldb php54-runkit php54-yaml
php54-libevent php54-scrypt php54-yaz
php54-libvirt
homebrew
verwenden, um mcrypt
zu installieren, sofern dies möglich istextension_dir
-Pfad und finden Sie heraus, wo sich die mcrypt.so
-Datei befindet, und prüfen Sie, ob eine Abweichung vorliegt (oder geben Sie den vollständigen Pfad an).Für mich auf Yosemite
$ brew install mcrypt php56-mcrypt
starte den Computer neu
hat den Trick gemacht.
Solution with brew funktionierte nur nach folgendem: In Ihrer php.ini
nano /private/etc/php.ini
füge diese Zeile hinzu:
extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so"
Warnung! Legen Sie die korrekte PHP -Version fest.
Ich würde empfehlen, alles über Homebrew zu installieren, wenn Sie die Option haben. Ich ging eine Zeit lang in Kreisen, aber die Installation von PHP 5.x via brew und die erforderlichen Module funktionierten sehr gut. Ich arbeitete mit PHP 5.4 und nutzte dies, um anfangs loszulegen:
https://github.com/josegonzalez/homebrew-php
und installierte dann die zusätzlichen Module mit:
brew install php54-redis
brew install php54-xdebug
brew install php54-mcrypt
...
Eine weitere Möglichkeit für diejenigen, die OS X so sauber wie möglich halten möchten, ist Vagrant [1], um eine PHP-Entwicklungsumgebung zu definieren. Vagrant kann VirtualBox [2] im Headless-Modus (~ 3% der CPU auf meinem 13-Zoll-MacBook Pro 2009) verwenden, um eine virtuelle Maschine mit dem Webserver und PHP und allen anderen auszuführen.
Um die Vagabundumgebung auf einfache Weise zu erstellen, können Sie dieses großartige Tool verwenden https://puphpet.com/
Ich würde ein Shell-Skript erstellen, um mcrypt-Modul für PHP 5.3 ohne Homebrew zu installieren.
Die Skripts installieren bei Bedarf php autoconf und kompilieren das Modul für Ihre PHP-Version.
Der Link ist hier: https://Gist.github.com/lucasgameiro/8730619
Vielen Dank
Nichts hat funktioniert und schließlich wurde es mit der Ressource @ Here und Here ; Denken Sie daran, dass für OSX Mavericks (10.9) PHP 5.4.17 oder Stable PHP 5.4.22 source zum Kompilieren von mcrypt verwendet werden soll. Php Source 5.4.22 hier
Brew-Base-Lösung für mich gearbeitet
Installieren Sie diese Pakete
$ brew install brew installieren mcrypt php54-mcrypt
Kopieren Sie die Standarddatei php.ini.default in php.ini
$ Sudo cp /private/etc/php.ini.default /private/etc/php.ini
Fügen Sie diese Zeile zum Abschnitt der php.ini-Dateierweiterung hinzu. Überprüfen Sie den Erweiterungspfad mit dem Installationspfad auf Ihrem Computer
extension = "/ usr/local/Cellar/php54-mcrypt/5.3.26/mcrypt.so"
Starten Sie Ihren Apache-Server neu
$ Apache neu starten
Das habe ich gemacht:
$ wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download
$ tar xzvf libmcrypt-2.5.8.tar.gz
$ ./configure
$ make
$ Sudo make install
$ brew install autoconf
$ wget file:///Users/rmatikolai/Downloads/php-5.4.24.tar.bz2
$ tar xjvf php-5.4.24.tar.bz2
$ cd php-5.4.24/ext/mcrypt
$ phpize
$ ./configure # this is the step which fails without the above dependencies
$ make
$ make test
$ Sudo make install
$ Sudo cp /private/etc/php.ini.default /private/etc/php.ini
$ Sudo vi /private/etc/php.ini
Als nächstes müssen Sie die Zeile hinzufügen:
extension=mcrypt.so
$ Sudo apachectl restart
mycrypt.o und mcrypt_filter.o befinden sich in den ext/.libs des von PHP heruntergeladenen Verzeichnisses. Kopieren Sie die Dateien einfach nach ext/mcrypt und führen Sie dann erneut make && make install aus.
Mit den letzten Änderungen in Brew (deprecation of homebrew/php) installieren Sie jetzt php mit mcrypt mit den folgenden.
brew install [email protected] -with-mcrypt=mcrypt
Möglicherweise müssen Sie vorherige Installationen von PHP deinstallieren
Nachdem ich brew install mcrypt php
ausgeführt hatte, musste ich php-mcrypt über pecl installieren:
pecl install mcrypt-1.0.1
Zum Zeitpunkt des Schreibens hat mcrypt keine stabile pecl-Version, 1.0.1 ist die aktuelle Version für PHP 7.2 und 7.3, und brew install php
installiert PHP 7.2.