40 votes

Installation de l'extension mcrypt pour PHP sur OSX Mountain Lion

Toutes mes excuses à l'avance pour les éventuelles questions de n00b, je suis en train d'installer l'extension mcrypt pour PHP sur mon OSX Mountain Lion machine.

Les étapes suivantes dans le terminal est ce que j'ai fait jusqu'à présent pour réaliser mon PHP installer

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

Ce qui semble bien fonctionner et installe PHP 5.3.21 amende. J'ai ensuite fait

sudo nano /private/etc/php.ini

Et inclus

extension=mcrypt.so

Avec un Apache restart, phpinfo() ne montre pas que l'extension mcrypt est chargé.

J'ai ensuite essayé de préciser la extension_dir à l'intérieur de php.ini, encore une fois avec pas de chance.

Je l'ai fait

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

Et essayé les deux répertoires comme le extension_dir, avec pas de chance.

J'ai aussi essayé le suivant, après beaucoup de recherches sur Google

./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs --with-mcrypt

Qui semble fonctionner OK, mais alors à "faire", il renvoie

ext/mcrypt/mcrypt.o: No such file or directory
ext/mcrypt/mcrypt_filter.o: No such file or directory

Encore une fois, sans succès.

Ce que je fais mal? Il me semble que la physique de la compilation de mcrypt.donc, n'est pas le cas, ou est en train de compiler de manière incorrecte comme je me soupçonner d'être un autre mcrypt.ainsi, en vertu de localiser?

Quelqu'un s'il vous plaît aider? J'ai traversé des pages et des pages de recherches Google avec pas de chance!

77voto

DavidYell Points 6500

J'ai tendance à utiliser Homebrew sur Mac. Il va installer et configurer toutes les choses pour vous.
http://mxcl.github.com/homebrew/

Ensuite, vous devriez pouvoir l'installer avec brew install mcrypt php53-mcrypt et cela fonctionnera simplement (tm).

Souvenez-vous également que si vous utilisez le PHP PHP intégré, il est installé dans /usr/bin vous pouvez voir quel php vous utilisez avec which php sur le terminal et il retournera le chemin.

50voto

ckm Points 684

Je suis juste allé à travers ce sur la Montagne du Lion. Homebrew bloqué sur libiconv qui, pensait-elle était absente, mais était en fait jusqu'à ce jour. Après une heure à essayer de l'obtenir à reconnaître libiconv, j'ai abandonné et installé dans la vieille façon, qui a pris toutes les cinq minutes...

(download your php version)
$ wget http://www.php.net/get/php-5.3.15.tar.bz2/from/a/mirror
$ tar -xvzf php-5.3.15.tar.gz
$ cd php-5.3.15/ext/mcrypt
$ phpize
$ ./configure
$ make
$ make test
$ sudo make install 

mcrypt.donc, est maintenant dans votre PHP ext dir (/usr/lib/php/extensions/no-debug-non-zts-20090626/ dans mon cas), vous devez maintenant ajouter à php.ini comme un module

$ vi /etc/php.ini
$ (insert) extension=mcrypt.so
$ sudo apachectl restart

Fait - pas de brasser nécessaire. HTH quelqu'un.

38voto

Will Palmer Points 2614

L'installation de php-mcrypt sans l'utilisation d' port ou brew

Remarque: ces instructions sont longues parce qu'ils ont l'intention d'être approfondie. Le processus est en fait assez simple. Si vous êtes un optimiste, vous pouvez passer directement à la construction de l'extension mcrypt l'article, mais vous pouvez très bien voir les erreurs que j'ai fait, en me disant de me installez autoconf et libmcrypt première.

J'ai juste passé par sur une nouvelle installation de OSX 10.9. La solution qui a fonctionné pour moi a été très proche de celle de ckm - je suis notamment leurs démarches ainsi que mon propre dans son intégralité, à des fins d'exhaustivité. Mon objectif principal (autres que les "ayant mcrypt") a été pour effectuer l'installation dans un chemin qui a laissé le moins d'impact possible sur l'ensemble du système. Que signifie faire les choses manuellement (pas de port, n brew)

Pour faire les choses manuellement, vous aurez d'abord besoin d'un couple de dépendances: un pour construire des modules PHP, et un autre pour mcrypt précisément. Ce sont des autoconf et libmcrypt, soit de ce qui vous a peut-être déjà, mais ni d'où vous aurez une nouvelle installation de OSX 10.9.

autoconf

Autoconf (par manque d'un meilleur description) est utilisé pour dire " pas tout à fait disparates, mais encore très différents, des systèmes de comment compiler les choses. Il vous permet d'utiliser le même ensemble de commandes de base pour construire des modules sur Linux comme vous le feriez sur OSX, par exemple, en dépit de leurs différents fichiers système de hiérarchies, etc. J'ai utilisé la méthode décrite par Ares sur StackOverflow, je vais reproduire ici par souci d'exhaustivité. C'est très simple:

$ 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

Ensuite, vérifier l'installation en cours d'exécution:

$ which autoconf

qui doit renvoyer /usr/local/bin/autoconf

libmcrypt

Ensuite, vous aurez besoin d' libmcrypt, utilisés pour fournir les entrailles de l' mcrypt extension (extension étant elle-même une disposition d'une interface PHP dans cette bibliothèque). La méthode que j'ai utilisée était basée sur celle décrite ici, mais j'ai essayé de simplifier les choses du mieux que je peux:

Tout d'abord, téléchargez l' libmcrypt de la source, disponible à partir de SourceForge, et disponibles au moment d'écrire ces lignes, plus précisément, à:

http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download

Vous aurez besoin de passer par le biais de la norme SourceForge cerceaux pour obtenir le vrai lien de téléchargement, mais une fois que vous l'avez, vous pouvez passer à quelque chose comme ceci:

$ mkdir -p ~/mcrypt/dependencies/libmcrypt
$ cd ~/mcrypt/dependencies/libmcrypt
$ curl -o curl -o libmcrypt.tar.bz2 '<SourceForge direct link URL>'
$ tar xjf libmcrypt.tar.bz2
$ cd libmcrypt-*/
$ ./configure
$ make
$ sudo make install

La seule façon que je connaisse pour vérifier que cela a fonctionné est par l'intermédiaire de l' ./configure étape pour l' mcrypt extension de lui-même (ci-dessous)

la construction de l'extension mcrypt

C'est notre objectif premier. J'espère que le bref passage dans la dépendance de l'enfer est fini maintenant.

Tout d'abord, nous allons avoir besoin d'obtenir le code source pour l' mcrypt extension. C'est la plus facilement disponible enterré dans le code source de PHP. Donc: déterminer quelle version du code source PHP dont vous avez besoin.

$ php --version # to get your PHP version

maintenant, si vous êtes chanceux, votre version sera disponible pour téléchargement à partir de la principale miroirs. Si elle l'est, vous pouvez écrire quelque chose comme:

$ 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

Malheureusement, ma version actuelle (5.4.17, dans ce cas) n'était pas disponible, j'ai donc besoin d'utiliser les solutions de rechange/liens historiques au http://downloads.php.net/stas/ (aussi un officiel de PHP, site de téléchargement). Pour ceux-ci, vous pouvez utiliser quelque chose comme:

$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -LO http://downloads.php.net/stas/php-5.4.17.tar.bz2

Encore une fois, en fonction de votre version actuelle.

Une fois que vous l'avez, (et toutes les dépendances, à partir de ci-dessus), vous pouvez obtenir le processus principal de la construction/installation du module.

$ 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

En théorie, mcrypt.so est maintenant dans votre dossier d'extension PHP. Ensuite, nous devons le dire à PHP à ce sujet.

la configuration de l'extension mcrypt

Votre php.ini le fichier doit être dit de charger mcrypt. Par défaut dans OS x 10.9, il a réellement mcrypt-les informations de configuration spécifiques, mais il ne fait pas les activer mcrypt sauf si vous lui dites.

L' php.ini le fichier n'est pas, par défaut, existent. Au lieu de cela, le fichier /private/etc/php.ini.default les listes la configuration par défaut, et peut être utilisé comme un bon modèle pour la création de la "vraie" php.ini, si elle n'existe pas déjà.

Pour déterminer si php.ini existe déjà, exécutez:

$ ls /private/etc/php.ini

Si il y a un résultat, il existe déjà, et vous devez passer à la prochaine commande.

Pour créer l' php.ini le fichier, exécutez:

$ sudo cp /private/etc/php.ini.default /private/etc/php.ini

Ensuite, vous devez ajouter la ligne:

extension=mcrypt.so

Quelque part dans le fichier. Je recommande la recherche le fichier pour ;extension=, et en l'ajoutant immédiatement avant la première occurrence.

Une fois que ceci est fait, l'installation et la configuration est terminée. Vous pouvez vérifier qu'il a travaillé en exécutant:

php -m | grep mcrypt

Qui devrait de sortie "mcrypt", et rien d'autre.

Si votre utilisation de PHP s'appuie sur Apache httpd, vous devez redémarrer l'ordinateur avant de vous remarquerez les changements sur le web. Vous pouvez le faire via:

$ sudo apachectl restart

Et vous avez terminé.

10voto

cwd Points 8723

Pourquoi Vous obtenez Cette Erreur

PHP se plaint si l'un des fichiers comme mcrypt.so est inclus à l'aide de la syntaxe extension="mcrypt.so" , mais le fichier n'est pas dans l' extension_dir path ( utilisation, <?php phpinfo(); ?> ou php -i à vérifier).

Il sera également vous dire qui php.ini fichier de configuration est en cours de chargement afin que vous sachiez où les paramètres sont à venir. Il sera probablement quelque chose comme /usr/local/etc/php/5.4/php.ini si vous utilisez la version homebrew.

Prendre connaissance de la partie en vertu de ce qui dit quelque chose comme "cette Analyse dir pour d'autres .les fichiers ini" parce que ce que cela signifie, c'est qu'il vous donne un endroit pour mettre votre propre fichier, comme tweaks.ini qui est chargé après le fichier de configuration principal de sorte que vous pouvez apporter des modifications et de maintenir avec eux facilement. Rappelez-vous aussi que tous les fichiers de ce répertoire sont chargées dans l'ordre alphabétique, donc si vous en avez un, appelés adjustments.ini qui contient mcrypt directives, et il y a un mcrypt.ini, le plus probable, vos réglages seront annulés.

Une alternative à la spécification extension="mcrypt.so" est de spécifier le chemin d'accès complet à l' mcrypt.so le fichier. L'autre option consiste à modifier l' extension_dir réglage.

Ce qui a fonctionné pour moi

Sur Mavericks, je n'avais pas à le faire. J'ai fait une nouvelle installation de homebrew puis ajouté le josegonzalez appuyez sur à l'aide de:

brew tap josegonzalez/homebrew-php

(Mon autre portable était sous Mountain Lion et a également été à l'aide de homebrew dans cette configuration.)

Après que vous avez tapé que génial repo vous pouvez installer php et mcrypt en utilisant quelque chose comme:

brew install php54 php54-mcrypt

Si cela ne fonctionne pas (et pourquoi devrais-je utiliser homebrew de toute façon?)

Je conseille vivement d'essayer cette route avant le téléchargement et l'installation à partir des sources. Il n'est pas difficile à construire à partir de la source, mais je ne veux pas avoir à maintenir que. C'est l'une des raisons de l'utilisation d' homebrew , en premier lieu - c'est un gestionnaire de paquets (avec une ÉNORME communauté).

Il y a beaucoup de développement sur l' homebrew projet et si vous avez des problèmes, je vous suggère de vérifier leurs enjeux page

Donc, oui, vous pouvez le construire à partir de la source et qui pourrait sembler une bonne option si vous voulez juste mcrypt, mais il peut vous détester pour ce faire plus tard...

Si vous ne voulez pas être l'aide d' php54 il y a également l' php53 de la branche. Ils ont quelques instructions à la mise en pension sur la façon d'utiliser les deux / basculer entre eux.

Si vous êtes nouveau à l'homebrew vous devez savoir que vous découvrez ce que le reste est disponible à l'aide d' brew search php54, ce qui donne quelque chose comme:

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

TLDR

  • Vous devez utiliser homebrew installer mcrypt si possible
  • Si vous recevez des erreurs, c'est probablement parce que votre fichier de configuration(s) sont foiré. Vérifier l' extension_dir chemin et comprendre où l' mcrypt.so le fichier est et voir si il y a un écart (ou spécifier le chemin d'accès complet)

5voto

Turtletrail Points 65

La solution avec infusion n'a fonctionné qu'après ce qui suit: dans votre php.ini

 nano /private/etc/php.ini
 

ajoutez cette ligne:

 extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so"
 

Attention! Définissez la bonne version de PHP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X