从 PHP 5.2.8 源代码在 Mac OSX (10.5) 上安装 mcrypt 测试失败,我该怎么办?

Posted

技术标签:

【中文标题】从 PHP 5.2.8 源代码在 Mac OSX (10.5) 上安装 mcrypt 测试失败,我该怎么办?【英文标题】:Installing mcrypt on Mac OSX (10.5) from PHP 5.2.8 source fails tests, what do I do? 【发布时间】:2010-12-06 09:34:43 【问题描述】:

所以我正在尝试在本地安装 mcrypt 以进行开发。我以前从未从源代码编译过,所以请多多包涵,但我所做的不足是:

    下载并安装 libmcrypt-2.5.8(从源代码) 从http://www.viames.it/mac-os-x.html 下载已编译的 mcrypt.so(注意:已编译的 gd.so 似乎可以正常工作) 更新 php.ini(以包含相关行) 重启网络共享(apache);页面无法加载 删除 extension=mcrypt.so 行并重新启动 apache,页面再次加载) 从 php.net 下载 PHP 5.2.8 源码,并尝试从 /ext/mcrypt 配置和安装 mcrypt

此时,当我运行 make test 时,一切都失败了。

Number of tests :   36                36
Tests skipped   :    0 (  0.0%) --------
Tests warned    :    0 (  0.0%) (  0.0%)
Tests failed    :   36 (100.0%) (100.0%)
Expected fail   :    0 (  0.0%) (  0.0%)
Tests passed    :    0 (  0.0%) (  0.0%)

以防万一,我继续执行 sudo make install,更新 php.ini,并尝试加载页面。页面加载正常。我去了我的 phpinfo 页面,但那里根本没有显示 mcrypt。我为此来回走了几次,但仍然没有发生任何事情。

我对现在该做什么感到困惑,因为我不确定当 make 测试失败时我应该做什么,我怀疑这就是为什么我的 mcrypt 根本不工作(即使.so 文件在那里)。我在下面包含了 make 测试失败的摘要结果。

任何帮助将不胜感激:)

失败的测试总结
-------------------------------------------------- ------------------
测试河豚兼容性 [tests/blowfish.phpt]
错误 #35496(在没有正确初始化的情况下 mcrypt_generic()/mdecrypt_generic() 崩溃)。 [测试/bug35496.phpt]
错误 #37595(mcrypt_generic 以错误的方式计算数据长度)[tests/bug37595.phpt]
错误 #41252(在没有先调用 mcrypt_generic_init 的情况下调用 mcrypt_generic 崩溃)[tests/bug41252.phpt]
错误 #46010(在 ecb 模式下错误地为 iv 生成警告)[tests/bug46010.phpt]
错误 #8040(MCRYPT_MODE_* 似乎不存在)[tests/bug8040.phpt]
mcrypt_cbc [测试/mcrypt_cbc.phpt]
mcrypt_cbf [测试/mcrypt_cbf.phpt]
mcrypt_create_iv [测试/mcrypt_create_iv.phpt]
mcrypt_decrypt [测试/mcrypt_decrypt.phpt]
mcrypt_ecb [测试/mcrypt_ecb.phpt]
mcrypt_enc_get_algorithms_name [测试/mcrypt_enc_get_algorithms_name.phpt]
mcrypt_enc_get_block_size [测试/mcrypt_enc_get_block_size.phpt]
mcrypt_enc_get_iv_size [测试/mcrypt_enc_get_iv_size.phpt]
mcrypt_enc_get_key_size [测试/mcrypt_enc_get_key_size.phpt]
mcrypt_enc_get_modes_name [测试/mcrypt_enc_get_mode_name.phpt]
mcrypt_enc_get_supported_key_sizes [测试/mcrypt_enc_get_supported_key_sizes.phpt]
mcrypt_enc_is_block_algorithm [测试/mcrypt_enc_is_block_algorithm.phpt]
mcrypt_enc_is_block_algorithm_mode [测试/mcrypt_enc_is_block_algorithm_mode.phpt]
mcrypt_enc_is_block_mode [测试/mcrypt_enc_is_block_mode.phpt]
mcrypt_enc_self_test [测试/mcrypt_enc_self_test.phpt]
mcrypt_get_block_size [测试/mcrypt_get_block_size.phpt]
mcrypt_get_cipher_name [测试/mcrypt_get_cipher_name.phpt]
mcrypt_enc_get_iv_size [测试/mcrypt_get_iv_size.phpt]
mcrypt_get_key_size [测试/mcrypt_get_key_size.phpt]
mcrypt_list_algorithms [测试/mcrypt_list_algorithms.phpt]
mcrypt_list_modes [测试/mcrypt_list_modes.phpt]
mcrypt_module_get_algo_block_size [测试/mcrypt_module_get_algo_block_size.phpt]
mcrypt_module_get_algo_key_size [测试/mcrypt_module_get_algo_key_size.phpt]
mcrypt_module_get_supported_key_sizes [测试/mcrypt_module_get_supported_key_sizes.phpt]
mcrypt_module_is_block_algorithm [测试/mcrypt_module_is_block_algorithm.phpt]
mcrypt_module_is_block_algorithm_mode [测试/mcrypt_module_is_block_algorithm_mode.phpt]
mcrypt_module_is_block_mode [测试/mcrypt_module_is_block_mode.phpt]
mcrypt_module_open [测试/mcrypt_module_open.phpt]
mcrypt_module_self_test [测试/mcrypt_module_self_test.phpt]
mcrypt_ofb [测试/mcrypt_ofb.phpt]

【问题讨论】:

【参考方案1】:

通过 AppStore 安装 Xcode

安装 MacPorts (http://guide.macports.org/#installing.macports)

使用端口安装 libmcrypt

port install libmcrypt

下载 PHP 源码 (http://php.net/downloads.php)

在安装前编译扩展

cd /directory/to/php/source/ext/mcrypt
phpize .
./configure \
--with-php-config=`which php-config` \
--with-mcrypt=/opt/local
make 
sudo make install

【讨论】:

以上是关于从 PHP 5.2.8 源代码在 Mac OSX (10.5) 上安装 mcrypt 测试失败,我该怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

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

compile php with openssl on mac osx error 填坑

代码块无法在 mac OSX 上编译

升级到 Mac OSX Sierra 时面临 mcrypt 错误问题

php [OSX脚本] macOS的脚本和命令#mac #os #osx #macos

如何在 Mac OSX 10.9 上的 php 中启用 mcrypt?