为潜在的n00b问题提前道歉,我正在尝试在我的OSX Mountain Lion机器上安装PHP的mcrypt扩展。
终端中的以下步骤是我到目前为止完成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,但没有运气。
经过大量谷歌搜索
后,我也尝试了以下内容./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的物理编译没有发生,或者编译错误,因为我怀疑在locate下会发现另一个mcrypt.so?
有人请帮忙吗?我在Google搜索页面上浏览过没有运气的页面!
答案 0 :(得分:77)
我倾向于在Mac上使用Homebrew。它将为您安装和配置所有内容 http://mxcl.github.com/homebrew/
然后你应该可以用brew install mcrypt php53-mcrypt
安装它,它就是Just Work(tm)。
您可以将53
替换为您正在使用的任何PHP版本,例如php56-mcrypt
或php70-mcrypt
。如果您不确定,请使用brew search php
。
还要记住,如果您使用内置的Mac PHP,它已安装到/usr/bin
中,您可以在终端上查看您使用which php
的哪个php,它将返回路径。< / p>
答案 1 :(得分:50)
我刚刚在Mountain Lion上看过这个。自制软件封锁了它认为缺失的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某人。
答案 2 :(得分:38)
mcrypt
而不使用port
或brew
注意:这些说明很长,因为它们想要彻底。这个过程实际上非常简单。如果你是一个 乐观主义者,您可以跳到构建mcrypt扩展 部分,但你可能会看到我做的错误,告诉我 首先安装
autoconf
和libmcrypt
。
我刚刚在全新安装的OSX 10.9上完成了这项工作。对我有用的解决方案非常接近 ckm 的解决方案 - 为了完整性,我完全包括他们的步骤以及我自己的步骤。我的主要目标(除了“mcrypt
”之外)是以对整个系统影响最小的方式执行安装。这意味着手动执行操作(无port
,无brew
)
要手动执行操作,首先需要一些依赖项:一个用于构建PHP模块,另一个用于mcrypt
。这些是autoconf
和libmcrypt
,您可能已经使用过这两种版本,但在全新安装OSX 10.9时,这两种版本都没有。
Autoconf(缺乏更好的描述)用于告诉不完全不同但仍然非常不同的系统如何编译。它允许您使用相同的一组基本命令在Linux上构建模块,就像在OSX上一样,尽管它们具有不同的文件系统层次结构等等。我使用了the method described by Ares on 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
接下来,运行以下命令验证安装:
$ which autoconf
应返回/usr/local/bin/autoconf
接下来,您将需要libmcrypt
,用于提供mcrypt
扩展的内容(扩展本身是此库中PHP接口的一部分)。我使用的方法基于here描述的方法,但我试图尽可能地简化事情:
首先,下载libmcrypt
来源$ 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
,可在撰写本文时查阅,具体请访问:
你需要跳过标准的SourceForge箍来获得真正的下载链接,但是一旦你拥有它,就可以将它传递给类似的东西:
./configure
我知道验证这是否有效的唯一方法是通过mcrypt
扩展程序本身的mcrypt
步骤(下方)
这是我们的实际目标。希望现在已经结束了对依赖地狱的短暂处理。
首先,我们需要获取$ php --version # to get your PHP version
扩展程序的源代码。这是最容易获得的,隐藏在所有PHP的源代码中。所以:确定你需要的PHP源代码版本。
$ 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
现在,如果您很幸运,您可以从主镜像下载当前版本。如果是,您可以键入以下内容:
$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -LO http://downloads.php.net/stas/php-5.4.17.tar.bz2
不幸的是,我目前的版本(在本例中为5.4.17)不可用,因此我需要使用http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download(也是官方PHP下载站点)的替代/历史链接。对于这些,你可以使用类似的东西:
$ 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.ini
现在位于PHP扩展目录中。接下来,我们需要告诉PHP它。
需要告知您的mcrypt
文件加载mcrypt
。默认情况下,在OSX 10.9中,它实际上具有mcrypt
特定的配置信息,但除非您告知它,否则它实际上不会激活php.ini
。
默认情况下,/private/etc/php.ini.default
文件不存在。相反,文件php.ini
列出了默认配置,并且可以用作创建“true”php.ini
的良好模板(如果它尚不存在)。
要确定$ ls /private/etc/php.ini
是否已存在,请运行:
php.ini
如果有结果,它已经存在,你应该跳过下一个命令。
要创建$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
文件,请运行:
extension=mcrypt.so
接下来,您需要添加以下行:
;extension=
文件中的某个地方。我建议在文件中搜索php -m | grep mcrypt
,并在第一次出现之前立即添加。
完成此操作后,安装和配置即告完成。您可以通过运行来验证这是否有效:
mcrypt
哪个应该输出“httpd
”,而不是其他内容。
如果您使用PHP依赖于Apache的$ sudo apachectl restart
,则需要重新启动它才能注意到Web上的更改。您可以通过以下方式执行此操作:
{{1}}
你已经完成了。
答案 3 :(得分:10)
PHP抱怨如果使用mcrypt.so
语法包含extension="mcrypt.so"
之类的文件,但该文件不在extension_dir
路径中(使用<?php phpinfo(); ?>
或{{1}检查那个)。
它还会告诉您正在加载哪个php -i
配置文件,以便您知道设置的来源。如果您使用自制软件版本,很可能会像php.ini
那样。
请注意下面的部分说“扫描此目录以获取其他.ini文件”,因为这意味着它可以让您放置自己的文件,例如/usr/local/etc/php/5.4/php.ini
之后加载的文件主配置文件,以便您可以轻松地进行更改并跟上它们。还要记住,此目录中的所有文件都按字母顺序加载,因此如果您有一个名为tweaks.ini
且包含adjustments.ini
指令的文件,并且有一个mcrypt
,则很可能您的设置将被覆盖。
指定mcrypt.ini
的一种替代方法是指定extension="mcrypt.so"
文件的完整路径。另一个选项是修改mcrypt.so
设置。
在小牛队,我没有必要这样做。我完成了extension_dir
的全新安装,然后使用:
homebrew
(我的另一台笔记本电脑正在运行Mountain Lion,并且在此设置中也使用了自制软件。)
点击 that awesome repo 后,您可以使用以下内容安装brew tap josegonzalez/homebrew-php
和php
mcrypt
我强烈建议在从源代码下载和构建之前尝试这条路线。从源代码构建并不难 - 但我不想保持这一点。这是首先使用brew install php54 php54-mcrypt
的原因之一 - 它是一个包管理器(有一个巨大的社区)。
homebrew
项目有很多开发项目 - 如果您遇到问题,我建议您查看issues page
所以是的,你可以从源代码构建它,如果你只是想让mcrypt工作,那么现在看起来似乎是一个不错的选择,但是你可能会因为以后这样做而讨厌...
如果您不想使用homebrew
,还有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
安装homebrew
mcrypt
路径并确定extension_dir
文件的位置,并查看是否存在差异(或指定完整路径)答案 4 :(得分:8)
对我而言,在优胜美地
$ brew install mcrypt php56-mcrypt
重启电脑
做了这个伎俩。
答案 5 :(得分:5)
使用brew的解决方案仅在以下情况下工作: 在你的php.ini
中nano /private/etc/php.ini
添加以下行:
extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so"
警告!设置正确的PHP版本。
答案 6 :(得分:4)
如果你有选择,我建议你通过自制软件安装一切。我进入了一段时间,但是通过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
...
答案 7 :(得分:3)
那些想要尽可能保持OS X干净的人的另一种可能性是使用vagrant [1]来定义php开发环境。 Vagrant可以在无头模式下使用VirtualBox [2](我的13英寸,2009年中期MacBook Pro上约3%的CPU)使用webserver和php运行虚拟机。
要轻松创建流浪汉环境,您可以使用这个出色的工具https://puphpet.com/
答案 8 :(得分:2)
我创建了一个shell脚本来安装PHP 5.3的mcrypt模块而没有自制软件。
如果需要,脚本会安装php autoconf并为你的php版本安装编译模块。
链接位于:https://gist.github.com/lucasgameiro/8730619
由于
答案 9 :(得分:1)
没有任何效果,最终使用资源@ Here和Here使其工作;请记住OSX Mavericks(10.9)应该使用PHP 5.4.17或Stable PHP 5.4.22源来编译mcrypt。 Php Source 5.4.22 here
答案 10 :(得分:1)
Brew base solution为我工作
安装这些软件包
$ brew install brew install mcrypt php54-mcrypt
将默认的php.ini.default复制到php.ini
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
将此行添加到php.ini文件扩展名部分 - 请在您的计算机中验证包含安装位置的扩展路径
扩展= “/ USR /本地/地窖/ php54-mcrypt的/ 5.3.26 / mcrypt.so”
重新启动Apache服务器
$ apache restart
答案 11 :(得分:1)
这就是我所做的:
$ 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
答案 12 :(得分:0)
mycrypt.o和mcrypt_filter.o位于php下载目录的ext / .libs中。只需将文件复制到ext / mcrypt,然后运行make&amp;&amp;再次安装。
答案 13 :(得分:0)
随着brew的最近更改(自制软件/ php的弃用),您现在使用mcrypt安装php以及以下内容。
brew install php@5.6 -with-mcrypt=mcrypt
您可能必须卸载之前安装的php
答案 14 :(得分:0)
因此,在运行brew install mcrypt php
之后,我不得不通过pecl安装php-mcrypt:
pecl install mcrypt-1.0.1
在撰写本文时,mcrypt尚没有稳定的pecl版本,1.0.1是php 7.2和7.3的当前版本,而brew install php
将安装php 7.2。
答案 15 :(得分:-4)
sudo apt-get install php5-mcrypt
ln -s /etc/php5/mods-available/mcrypt.ini /etc/php5/fpm/conf.d/mcrypt.ini
service php5-fpm restart
服务nginx重启