在OSX Mountain Lion上安装PHP的mcrypt扩展
对于潜在的n00b问题提前道歉,我试图在我的OSX Mountain Lion机器上安装PHP的mcrypt扩展。
terminal中的以下步骤是我到目前为止完成我的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 这似乎工作正常,安装PHP 5.3.21罚款。 我已经完成了
 sudo nano /private/etc/php.ini 
并包括在内
 extension=mcrypt.so 
随着Apache重新启动,phpinfo()不显示mcrypt扩展加载。
然后,我试图在php.ini中指定extension_dir,再次没有运气。
我已经做好了
 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 
并尝试两个目录作为extension_dir,没有运气。
经过多次Googlesearch之后,我也尝试了以下方法
 ./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs --with-mcrypt 
这似乎工作确定,但随后“make”,它返回
 ext/mcrypt/mcrypt.o: No such file or directory ext/mcrypt/mcrypt_filter.o: No such file or directory 
再次,没有成功。
我究竟做错了什么? 好像mcrypt.so的物理编译没有发生,或者是编译不正确,因为我怀疑有另一个mcrypt.sofind下find?
任何人请帮忙? 我已经浏览了谷歌search的页面,没有运气!
 我倾向于在Mac上使用Homebrew。 它会为你安装和configuration所有的东西。 
  http://mxcl.github.com/homebrew/ 
 那么你应该可以安装brew install mcrypt php53-mcrypt ,它会正常工作(tm)。 
 你可以用你正在使用的任何版本的PHPreplace53 ,比如php56-mcrypt或者php70-mcrypt 。 如果您不确定,请使用brew search php 。 
 还要记住,如果你使用内置的Mac PHP,它被安装到/usr/bin你可以看到你使用which php在terminal上使用which php ,它将返回path。 
我刚刚在山狮上经历过这个。 自制软件阻止了libiconv,它认为它已经丢失,但实际上是最新的。 经过一个小时的努力,我才意识到libiconv,我放弃了安装它的旧时尚的方式,花了所有五分钟…
 (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现在在你的PHP的ext目录( /usr/lib/php/extensions/no-debug-non-zts-20090626/在我的情况下),现在你需要添加到php.ini作为一个模块 
 $ vi /etc/php.ini $ (insert) extension=mcrypt.so $ sudo apachectl restart 
完成 – 没有必要的酿造。 HTH的人。
 在不使用port或brew情况下安装php- mcrypt 
注:这些说明很长,因为他们打算彻底。 这个过程实际上相当简单。 如果你是一个乐观主义者,你可以跳到构buildmcrypt扩展部分,但你可能会很好地看到我所做的错误,告诉我先安装
autoconf和libmcrypt。
 我刚刚安装了新的OSX 10.9。 为我工作的解决scheme非常接近ckm的解决scheme – 我完整地包括他们的步骤以及我自己的步骤。 我的主要目标(除了“有mcrypt ”)是以一种对系统整体影响最小的方式来执行安装。 这意味着手动做事(没有port ,没有brew ) 
 要手动执行,您首先需要一些依赖关系:一个用于构buildPHP模块,另一个用于mcrypt 。 这些是autoconf和libmcrypt ,你可能已经拥有了这两者,但是这两者都不是全新安装的OSX 10.9。 
autoconf的
Autoconf(缺乏更好的描述)被用来告诉不是完全不同的,但仍然非常不同的系统如何编译的东西。 它允许你使用相同的一组基本命令来在Linux上构build模块,就像在OSX上一样,尽pipe它们有不同的文件系统层次结构等等。我使用了Ares在StackOverflow中描述的方法 ,我将在这里重现为了完整性。 这个很直接:
 $ 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 
接下来,通过运行以validation安装:
 $ which autoconf 
 应该返回/usr/local/bin/autoconf 
libmcrypt
 接下来,您将需要libmcrypt ,用于提供mcrypt扩展的内容(该扩展本身是提供给这个库的PHP接口)。 我使用的方法是基于这里描述的方法,但我试图尽我所能简化事情: 
 首先,从SourceForge下载libmcrypt源文件,并在撰写本文时提供该文件,具体说明如下: 
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download
你需要跳过标准的SourceForge箍来获得真正的下载链接,但是一旦你拥有了它,你可以把它传递给这样的东西:
 $ 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 
 我知道validation这个工作的唯一方法是通过mcrypt扩展本身的./configure步骤(下面) 
build立mcrypt扩展
这是我们的实际目标。 希望短暂的进入依赖地狱现在已经结束了。
 首先,我们需要获取mcrypt扩展的源代码。 这是所有PHP的源代码中最容易获得的。 所以:确定你需要什么版本的PHP源代码。 
 $ php --version # to get your PHP version 
现在,如果你幸运的话,你现在的版本可以从主镜下载。 如果是这样,你可以input如下所示的内容:
 $ 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 
不幸的是,我目前的版本(5.4.17,在这种情况下)不可用,所以我需要使用替代/历史链接在http://downloads.php.net/stas/ (也是一个官方的PHP下载网站)。 对于这些,你可以使用像这样的东西:
 $ mkdir -p ~/mcrypt/php $ cd ~/mcrypt/php $ curl -LO http://downloads.php.net/stas/php-5.4.17.tar.bz2 
再次,根据您的当前版本。
一旦你拥有了它(和所有的依赖关系,从上面),你可以到达实际构build/安装模块的主要过程。
 $ 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 
 理论上, mcrypt.so现在在您的PHP扩展目录中。 接下来,我们需要告诉PHP。 
configurationmcrypt扩展
 你的php.ini文件需要被告知加载mcrypt 。 默认情况下,在OSX 10.9中,它实际上具有特定于mcryptconfiguration信息,但除非您告诉它,否则它实际上并不激活mcrypt 。 
 默认情况下, php.ini文件不存在。 相反,文件/private/etc/php.ini.default列出了默认的configuration,可以用作创build“真正的” php.ini一个很好的模板,如果它不存在的话。 
 要确定php.ini是否已经存在,请运行: 
 $ ls /private/etc/php.ini 
如果有结果,它已经存在,你应该跳过下一个命令。
 要创buildphp.ini文件,请运行: 
 $ sudo cp /private/etc/php.ini.default /private/etc/php.ini 
接下来,你需要添加行:
 extension=mcrypt.so 
 在文件的某处 我会build议在文件中search;extension= ,并在第一次出现之前立即添加它。 
一旦完成,安装和configuration就完成了。 您可以通过运行以validation这是否正常工作:
 php -m | grep mcrypt 
 哪个应该输出“ mcrypt ”,没有别的。 
 如果您对PHP的使用依赖于Apache的httpd ,那么在您注意到Web上的更改之前,您需要重新启动它。 你可以这样做: 
 $ sudo apachectl restart 
你完成了。
为什么你得到这个错误
  PHP抱怨,如果其中一个文件如mcrypt.so包含使用语法extension="mcrypt.so"但该文件不在extension_dirpath(使用<?php phpinfo(); ?>或php -i来检查)。 
 它也会告诉你哪个php.iniconfiguration文件正在被加载,所以你会知道设置来自哪里。 如果你使用的是自制软件,最有可能的就是/usr/local/etc/php/5.4/php.ini 。 
 记下它下面的部分,如“扫描这个目录以获得额外的.ini文件”,因为这意味着它可以让你放置自己的文件,就像在主configuration文件之后加载tweaks.ini一样您可以轻松地进行更改并跟上他们。 还要记住,这个目录中的所有文件都是按字母顺序加载的,所以如果你有一个包含mcrypt指令的mcrypt.ini ,并且有一个mcrypt.ini ,那么很可能你的设置将被覆盖。 
 指定extension="mcrypt.so"一种替代方法是指定mcrypt.so文件的完整path。 另一个选项是编辑extension_dir设置。 
什么为我工作
 在小牛队,我也不必这样做。 我做了一个新的安装homebrew ,然后添加josegonzalez水龙头使用: 
 brew tap josegonzalez/homebrew-php 
(我的另一台笔记本电脑正在运行Mountain Lion,并且在这个设置中也使用了自制软件。)
 当你点击这个真棒回购后,你可以使用类似的东西来安装php和mcrypt : 
 brew install php54 php54-mcrypt 
如果这不起作用(为什么我还要用自制软件?)
 我强烈build议在下载之前尝试使用此路线,并从源代码构build。 从源头上构build并不难 – 但我不想保持这一点。 这是首先使用homebrew的原因之一 – 它是一个软件包pipe理员(拥有一个巨大的社区)。 
 在homebrew项目上有很多的发展,如果你遇到问题,我build议你查看他们的问题页面 
所以是的,你可以从源代码build立它,现在看起来可能是一个很好的select,如果你只是想mcrypt工作,但你可能会恨自己后来这样做…
 如果你不想使用php54 ,也有php53分支。 他们在回购中有一些关于如何使用两者/在它们之间切换的说明。 
 如果你是新来的自制软件,你应该知道你可以使用brew search php54来查看还有什么可用的,例如: 
 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
-  如果可能,应该使用homebrew安装mcrypt
-  如果你得到错误,可能是因为你的configuration文件被搞乱了。 检查extension_dirpath并找出mcrypt.so文件的位置,并查看是否存在差异(或指定完整path)
对我来说,在约塞米蒂
 $ brew install mcrypt php56-mcrypt 
重启电脑
做的伎俩。
使用brew的解决scheme只能在以下情况下工作:在您的php.ini中
 nano /private/etc/php.ini 
添加这一行:
 extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so" 
警告! 设置正确的PHP版本。
如果你有select,我会build议通过自制软件安装一切。 我绕了一圈,但通过brew安装php 5.x,然后需要的模块工作。 我正在使用PHP 5.4,并用它来开始:
https://github.com/josegonzalez/homebrew-php
然后安装附加模块:
 brew install php54-redis brew install php54-xdebug brew install php54-mcrypt 
…
希望尽可能保持OS X清洁的另一种可能性是使用vagrant [1]来定义一个php开发环境。 Vagrant可以在无头模式下使用VirtualBox [2](我的13英寸,2009年中期MacBook Pro上〜3%的CPU)运行带有web服务器和php以及全部的虚拟机。
要轻松创buildstream浪环境,您可以使用这个伟大的工具https://puphpet.com/
我会创build一个shell脚本来安装没有自制软件的PHP 5.3的mcrypt模块。
脚本安装PHP autoconf如果需要和编译你的PHP版本的模块。
链接在这里: https : //gist.github.com/lucasgameiro/8730619
谢谢
没有任何工作,并最终得到它的工作使用资源@ 这里和这里 ; 只记得OSX Mavericks(10.9)应该使用PHP 5.4.17或Stable PHP 5.4.22源码来编译mcrypt。 PHP源5.4.22在这里
Brew基础解决scheme为我工作
- 
安装这些软件包 $ brew install brew安装mcrypt php54-mcrypt 
- 
将默认的php.ini.default复制到php.ini $ sudo cp /private/etc/php.ini.default /private/etc/php.ini 
- 
将此行添加到php.ini文件扩展名部分 – 请validation您的计算机中安装位置的扩展path 扩展= “/ USR /本地/地窖/ php54-mcrypt的/ 5.3.26 / mcrypt.so” 
- 
重新启动你的Apache服务器 $ apache重新启动 
这就是我所做的:
 $ 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 
接下来,你需要添加行:
 extension=mcrypt.so $ sudo apachectl restart 
mycrypt.o和mcrypt_filter.o在你的php下载目录的ext / .libs中。 只需将文件复制到ext / mcrypt,然后再次运行make && make install。
sudo apt-get install php5-mcrypt
ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/fpm/conf.d/mcrypt.ini
服务php5-fpm重启
服务nginx重启