web-dev-qa-db-fra.com

Installation de cryptage pour PHP sur OSX Mountain Lion

Toutes mes excuses pour les éventuelles questions sur n00b, j’essaie d’installer l’extension mcrypt pour PHP sur ma machine OSX Mountain Lion.

Les étapes suivantes dans terminal sont ce que j’ai fait jusqu’à présent pour réaliser mon installation de PHP

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 bien. J'ai ensuite fait

Sudo nano /private/etc/php.ini

Et inclus

extension=mcrypt.so

Avec un redémarrage Apache, phpinfo () n'indique pas que l'extension mcrypt est chargée.

J'ai ensuite essayé de spécifier le répertoire extension_dir dans le fichier php.ini, toujours sans succès. 

J'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 extension_dir, sans succès.

J'ai aussi essayé ce qui suit, après beaucoup de recherches sur Google

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

Ce qui semble fonctionner correctement, mais ensuite "make", il retourne

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

Encore une fois, pas de succès.

Qu'est-ce que je fais mal? Il semble que la compilation physique de mcrypt.so ne se produise pas ou que la compilation est incorrecte, car je soupçonnerais qu’il existe un autre fichier mcrypt.so situé sous localiser?

Quelqu'un s'il vous plaît aider? J'ai parcouru des pages sur des pages de recherches Google sans succès!

39
user2023687

J'ai tendance à utiliser Homebrew sur Mac. Il va installer et configurer tout le matériel pour vous.
http://mxcl.github.com/homebrew/

Ensuite, vous devriez pouvoir l'installer avec brew install mcrypt php53-mcrypt et ça fonctionnera Just Work (tm). 

Vous pouvez remplacer le 53 par la version de PHP que vous utilisez, telle que php56-mcrypt ou php70-mcrypt. Si vous n'êtes pas sûr, utilisez brew search php.

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

77
David Yell

Je viens de traverser cela sur Mountain Lion. Homebrew a bloqué sur libiconv ce qui, à son avis, faisait défaut, mais était en fait à jour. Après une heure d’essais de le faire reconnaître libiconv, j’ai abandonné et l’installé à l’ancienne, ce qui prenait cinq minutes ...

(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 est maintenant dans votre répertoire PHP ext (/usr/lib/php/extensions/no-debug-non-zts-20090626/ dans mon cas), vous devez maintenant ajouter à php.ini un module

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

Fait - aucune infusion n'est nécessaire. HTH quelqu'un.

50
ckm

Installer php -mcrypt sans utiliser port ou brew

Remarque: ces instructions sont longues car elles ont l'intention d'être approfondies. Le processus est en réalité assez simple. Si vous êtes un optimiste .__, vous pouvez passer directement au qui construit l'extension mcrypt section, mais vous pouvez très bien voir les erreurs que j’ai faites en me disant d’installer installer autoconf et libmcrypt en premier.} _

Je viens de passer à travers cela lors d'une nouvelle installation d'OSX 10.9. La solution qui a fonctionné pour moi était très proche de celle de ckm - j'inclus leurs étapes ainsi que les miennes dans leur intégralité, par souci d'exhaustivité. Mon objectif principal (autre que "ayant mcrypt") était d’effectuer l’installation de manière à laisser le moins d’impact possible sur le système dans son ensemble. Cela signifie que vous devez faire les choses manuellement (pas de port, pas de brew)

Pour faire les choses manuellement, vous aurez d’abord besoin de deux dépendances: une pour construire PHP modules, et une autre pour mcrypt en particulier. Il s’agit de autoconf et libmcrypt, que vous avez peut-être déjà, mais que vous n’aurez pas non plus lors d’une nouvelle installation d’OSX 10.9.

autoconf

Autoconf (faute d'une meilleure description) est utilisé pour indiquer aux systèmes peu disparates, mais toujours très différents, comment compiler des choses. Il vous permet d'utiliser le même ensemble de commandes de base pour construire des modules sous Linux que sous OSX, par exemple, malgré leurs hiérarchies de système de fichiers différentes, etc. J'ai utilisé la méthode décrite par Ares sur StackOverflow , qui Je vais reproduire ici pour être complet. Celui-ci 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érifiez l’installation en lançant:

$ which autoconf

qui devrait retourner /usr/local/bin/autoconf

libmcrypt

Ensuite, vous aurez besoin de libmcrypt, utilisé pour fournir les entrailles de l’extension mcrypt (l’extension elle-même étant la fourniture 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:

Commencez par télécharger la source libmcrypt, disponible sur SourceForge , et disponible au moment de la rédaction de cet article, plus précisément à l’adresse suivante:

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

Vous devrez parcourir les étapes standard de SourceForge pour obtenir le lien de téléchargement réel, mais une fois que vous l'avez, vous pouvez le transmettre à quelque chose comme ceci:

$ 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

Le seul moyen que je connaisse pour vérifier que cela a fonctionné est via l'étape ./configure pour l'extension mcrypt elle-même (ci-dessous)

construire l'extension mcrypt

C'est notre objectif actuel. Espérons que le bref passage dans l'enfer de la dépendance est terminé.

Premièrement, nous allons devoir obtenir le code source pour l'extension mcrypt. Ceci est le plus facilement disponible, enfoui dans le code source de PHP. Donc: déterminez quelle version du code source PHP dont vous avez besoin.

$ php --version # to get your PHP version

maintenant, si vous avez de la chance, votre version actuelle sera disponible au téléchargement à partir des miroirs principaux. Si c'est le cas, vous pouvez taper 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, je devais donc utiliser les liens alternatifs/historiques à l’adresse http://downloads.php.net/stas/ (également un officiel 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, d'en haut), vous pouvez accéder au processus principal de 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 répertoire PHP extension. Ensuite, nous devons en parler PHP.

configuration de l'extension mcrypt

Votre fichier php.ini doit être chargé de charger mcrypt. Par défaut, sous OSX 10.9, il contient en fait des informations de configuration spécifiques à mcrypt, mais il n'active pas mcrypt à moins que vous ne le lui indiquiez.

Le fichier php.ini n'existe pas par défaut. Au lieu de cela, le fichier /private/etc/php.ini.default liste la configuration par défaut et peut être utilisé comme bon modèle pour créer le "vrai" php.ini, s'il n'existe pas déjà.

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

$ ls /private/etc/php.ini

S'il existe un résultat, il existe déjà et vous devez ignorer la commande suivante.

Pour créer le fichier php.ini, 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 recommanderais de rechercher le fichier ;extension= et de l'ajouter immédiatement avant la première occurrence.

Une fois que cela est fait, l'installation et la configuration est terminée. Vous pouvez vérifier que cela a fonctionné en lançant:

php -m | grep mcrypt

Ce qui devrait générer "mcrypt", et rien d’autre.

Si votre utilisation de PHP repose sur la httpd d'Apache, vous devrez le redémarrer avant de remarquer les modifications sur le Web. Vous pouvez le faire via:

$ Sudo apachectl restart

Et tu as fini.

38
Will Palmer

Pourquoi vous obtenez cette erreur

PHP se plaint si l'un des fichiers tels que mcrypt.so est inclus en utilisant la syntaxe extension="mcrypt.so" mais que le fichier ne se trouve pas dans le chemin extension_dir (utilisez <?php phpinfo(); ?> ou php -i pour le vérifier).

Il vous indiquera également quel fichier de configuration php.ini est chargé afin que vous sachiez d'où viennent les paramètres. Ce sera probablement quelque chose comme /usr/local/etc/php/5.4/php.ini si vous utilisez la version homebrew.

Prenez note de la partie sous celle-ci qui dit quelque chose comme "Recherchez dans ce répertoire des fichiers .ini supplémentaires", car cela vous donne la possibilité de placer votre propre fichier, tel que tweaks.ini, chargé après le fichier de configuration principal afin peut faire des changements et les suivre facilement. N'oubliez pas non plus que tous les fichiers de ce répertoire sont chargés dans l'ordre alphabétique. Par conséquent, si vous en avez un appelé adjustments.ini qui contient les directives mcrypt et qu'il existe un mcrypt.ini, vos paramètres seront probablement remplacés.

Une alternative à la spécification de extension="mcrypt.so" consiste à spécifier le chemin complet du fichier mcrypt.so. L'autre option consiste à modifier le paramètre extension_dir.

Ce qui a fonctionné pour moi

Sur Mavericks, je n'avais pas à le faire non plus. J'ai fait une nouvelle installation de homebrew, puis j'ai ajouté le robinet josegonzalez en utilisant:

brew tap josegonzalez/homebrew-php

(Mon autre ordinateur portable fonctionnait sous Mountain Lion et utilisait également l'homebrew dans cette configuration.)

Après avoir appuyé sur ce repo génial, vous pouvez installer php et mcrypt en utilisant quelque chose comme:

brew install php54 php54-mcrypt

Et si cela ne fonctionne pas (et pourquoi devrais-je quand même utiliser homebrew?)

Je conseillerais vivement d’essayer cet itinéraire avant de le télécharger et de le construire à partir des sources. Ce n’est pas difficile de construire à partir de la source - mais je ne veux pas avoir à le maintenir. C'est l'une des raisons d'utiliser homebrew en premier lieu - c'est un gestionnaire de paquets (avec une communauté énorme).

Il y a beaucoup de développement sur le projet homebrew et - si vous rencontrez des problèmes, je vous conseillerais de consulter leur page de problèmes

Alors oui, vous pouvez le construire à partir des sources et cela peut sembler une bonne option pour le moment si vous voulez juste que mcrypt fonctionne mais que vous vous détestiez pour le faire plus tard ...

Si vous ne voulez pas utiliser php54, il existe également une branche php53. Ils ont quelques instructions sur le repo sur la façon de les utiliser tous les deux/basculer entre eux.

Si vous êtes nouveau sur homebrew, sachez que vous vérifiez ce qui est disponible en utilisant brew search php54, 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 pour installer mcrypt si possible.
  • Si vous obtenez des erreurs, c'est probablement parce que vos fichiers de configuration sont gâchés. Vérifiez le chemin extension_dir et déterminez où se trouve le fichier mcrypt.so et voyez s'il y a une différence (ou spécifiez le chemin complet)
10
cwd

Pour moi, sur Yosemite

$ brew install mcrypt php56-mcrypt

redémarrer l'ordinateur

a fait le tour.

8
Sinan Eldem

La solution avec infusion ne fonctionnait 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 PHP.

5
Turtletrail

Je recommanderais d'installer tout via homebrew si vous avez l'option. J'ai tourné en rond pendant un moment, mais l'installation de PHP 5.x via une infusion puis les modules nécessaires ont fonctionné à merveille. Je travaillais avec php 5.4 et l'ai utilisé pour commencer:

https://github.com/josegonzalez/homebrew-php

puis installé les modules supplémentaires avec:

brew install php54-redis
brew install php54-xdebug
brew install php54-mcrypt

...

4
sinewave

Une autre possibilité pour ceux qui souhaitent garder OS X aussi propre que possible consiste à utiliser vagant [1] pour définir un environnement de développement php. Vagrant peut utiliser VirtualBox [2] en mode sans tête (~ 3% de l'UC sur mon MacBook Pro 13 pouces, Mid 2009) pour exécuter une machine virtuelle avec le serveur Web et php, etc.

Pour créer facilement l’environnement errant, vous pouvez utiliser ce formidable outil https://puphpet.com/

  1. http://www.vagrantup.com/
  2. https://www.virtualbox.org/
3
Davide Vernizzi

Je créerais un script Shell pour installer le module mcrypt pour PHP 5.3 sans homebrew.

Les scripts installent php autoconf si nécessaire et compilent le module pour votre version php.

Le lien est ici: https://Gist.github.com/lucasgameiro/8730619

Merci

2

Rien n'a fonctionné et a finalement fonctionné en utilisant la ressource @ Ici et Ici ; N'oubliez pas que pour OSX, Mavericks (10.9) doit utiliser la source PHP 5.4.17 ou la source Stable PHP 5.4.22 pour compiler mcrypt. Php Source 5.4.22 ici

1
star18bit

La solution de base Brew a fonctionné pour moi

  1. Installez ces paquets

    $ brasser installer brasser installer mcrypt php54-mcrypt

  2. Copiez php.ini.default par défaut dans php.ini

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

  3. Ajoutez cette ligne à la section d’extension de fichier php.ini - veuillez vérifier le chemin d’extension avec l’emplacement d’installation sur votre ordinateur

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

  4. Redémarrez votre serveur Apache

    $ Redémarrage Apache

1
sushilprj

C'est ce que j'ai fait:

$ 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

Ensuite, vous devez ajouter la ligne:

extension=mcrypt.so

$ Sudo apachectl restart
1
Roozbeh Zabihollahi

mycrypt.o et mcrypt_filter.o sont dans les extensions/.libs de votre répertoire php téléchargé. Copiez simplement les fichiers sur ext/mcrypt, puis exécutez à nouveau make && make install.

0
Tim Nong

Avec les récents changements dans Brew (obsolète de homebrew/php), vous installez maintenant php avec mcrypt avec les éléments suivants.

brew install [email protected] -with-mcrypt=mcrypt

Vous devrez peut-être désinstaller les installations précédentes de php

0
james.c.funk

Donc, après avoir exécuté brew install mcrypt php, j'ai dû installer php-mcrypt via pecl:

pecl install mcrypt-1.0.1

Au moment de la rédaction, mcrypt n’a pas de version stable pecl, la version 1.0.1 étant la version actuelle pour php 7.2 et 7.3, et brew install php installera php 7.2.

0
curiosity26