在 OSX 10.8.2 - PHP 5.3.15 上安装 mcrypt 和 homebrew

Posted

技术标签:

【中文标题】在 OSX 10.8.2 - PHP 5.3.15 上安装 mcrypt 和 homebrew【英文标题】:Installing mcrypt on OSX 10.8.2 - PHP 5.3.15 with homebrew 【发布时间】:2012-12-30 16:40:54 【问题描述】:

我已经通过homebrew 成功安装了mcrypt,但我很难找到mcrypt.so 的路径以将其作为扩展名包含在php.ini 中。

mcrypt 安装在/usr/local/Cellar/mcrypt/2.5.8。树:

-- AUTHORS
|-- ChangeLog
|-- INSTALL_RECEIPT.json
|-- NEWS
|-- README
|-- TODO
|-- bin
|   `-- libmcrypt-config
|-- include
|   |-- mcrypt.h
|   `-- mutils
|       `-- mcrypt.h
|-- lib
|   |-- libmcrypt.4.4.8.dylib
|   |-- libmcrypt.4.dylib -> libmcrypt.4.4.8.dylib
|   `-- libmcrypt.dylib -> libmcrypt.4.4.8.dylib
`-- share
    |-- aclocal
    |   `-- libmcrypt.m4
    `-- man
        `-- man3
            `-- mcrypt.3

我尝试在php.ini 中包含mcrypt.h

extension="/usr/local/Cellar/mcrypt/2.5.8/include/mcrypt.h"

然后重新启动 apache。 但它没有用。

当我在终端中运行 php 时,我得到:

PHP Warning:  PHP Startup: Unable to load dynamic library
'/usr/local/Cellar/mcrypt/2.5.8/include/mcrypt.h' - dlopen(/usr/local/Cellar/mcrypt/2.5.8/include/mcrypt.h, 9): 
image not found in Unknown on line 0

【问题讨论】:

为什么要安装在那里? 那是 homebrew 安装它的地方... 自制软件对每个包都是这样做的吗? IE。而不是将库放入/usr/local/lib,而是为每个库创建一个目录? 它似乎把所有的包都保存在/usr/local/Cellar/[pkg_name]/[pkg_version] Homebrew 工作得很好。您需要做的就是点击推荐的 php 公式,并从 Homebrew 本身安装 php $ brew tap homebrew/dupes $ brew tap josgonzalez/homebrew-php $ brew install php54 $ brew install php54-mcrypt 【参考方案1】:

首先检查 brew 是否是最新的:brew doctor

第二次安装基于php版本的mcrypt:brew install php53-mcrypt

注意:最新版本的 brew 不需要下面的第三步:

第三次打开php.ini文件并添加引用:sudo vi /private/etc/php.iniextension="/usr/local/Cellar/php53-mcrypt/5.3.25/mcrypt.so"

最后重启apache:sudo apachectl restart

【讨论】:

对于尝试只使用自制软件的人来说,这很有用。 当我做brew install php53-mcrypt 时,brew 告诉我它没有找到,但提到了一个“点击”。所以我做了brew tap josegonzalez/php 来添加那个水龙头,然后再次运行brew install php53-mcrypt,它安装了一堆东西,但最终成功了。 今天最新版本的软件只需要brew install php56-mcrypt @TylerCollier 同上。 @SimonBengtsson - 是的。我正在使用 php 5.5 并在添加 extension="/usr/local/Cellar/php55-mcrypt/5.5.30/mcrypt.so" 后出现错误,因此将其删除,现在一切正常。【参考方案2】:

与this 一起工作就像小菜一碟。

$ brew install mcrypt
Warning: mcrypt-2.6.8 already installed
$ brew install php55-mcrypt
Warning: php55-mcrypt-5.5.20 already installed

然后测试一下:

$ php -m | grep mcrypt
mcrypt

$ php -i | grep mcrypt
Additional .ini files parsed => /usr/local/etc/php/5.5/conf.d/ext-mcrypt.ini,
Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value

【讨论】:

【参考方案3】:

这可能很有用...

    brew tap homebrew/homebrew-php brew install php56-mcrypt

【讨论】:

【参考方案4】:

我已经解决了这个问题

brew install php54-mcrypt --without-homebrew-php

然后我将此行添加到/etc/php.ini

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

如果此文件不存在,您需要从/etc/php.ini.default 复制它。我还用php -v检查了我的php版本(它是5.4.x)

【讨论】:

这就是我所需要的。只需要先这样做:brew tap josegonzalez/php 错误:php54-mcrypt 没有可用的公式【参考方案5】:

在通过不同的建议思考了几个小时后,this one 为我工作(通过 MacPorts 安装):

感谢克里斯·布鲁尔

http://macports.org.下载并安装MacPorts

在终端中执行以下步骤:

强制 MacPorts 更新(仅在安装 Apple 的 Xcode 时有效):

sudo port -v selfupdate

现在,安装 memcached:

sudo port install php5-mcrypt

将新创建的 mcrypt 共享对象复制到 Mac OS X 的默认 PHP5 扩展目录中:

sudo cp /opt/local/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so /usr/lib/php/extensions/no-debug-non-zts-20090626/

接下来,您需要编辑 php.ini 以添加扩展。找到短语 Dynamic Extensions,并添加:

extension=mcrypt.so

最后,重启 Apache:

sudo apachectl restart

【讨论】:

非常感谢您的回答。我在 os x mountain lion 上,似乎没有其他工作! 旧信息现在使用 sudo port install php53-mcrypt【参考方案6】:

感谢您为此所做的工作!这对我有用。我在 Mac 上,它正在寻找 xcode。开发者位置尚未设置,因此我必须完成所有这些操作。

(解决开发者路径) How can I resolve "Error: No developer directory found at /Developer"?

    sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

(签署使用 XCODE 的协议)

    sudo xcodebuild -license

最后按照上面的步骤操作!

【讨论】:

以上是关于在 OSX 10.8.2 - PHP 5.3.15 上安装 mcrypt 和 homebrew的主要内容,如果未能解决你的问题,请参考以下文章

Mac / OSx - 更改在 bash 中调用的 PHP 版本

OSX 上 Safari 6 中的 CSS3 闪烁(但这不是闪烁到白色的问题!)

OSX 上的 32 位 DTrace

在使用 Python 2.7.2 和 MySQL 的 OS X 10.8.2(Mountain Lion)上导入 MySQLdb 失败 [重复]

如何使用 xampp 在 OSX 上正确设置 php_gmp

Homebrew PHP5.5失败OSX