MacOS Sonoma下通过Brew为PHP7.1.33装mcrypt扩展遇错求助
解决PHP 7.1.33安装mcrypt扩展编译报错问题
问题背景
基于PHP 7.1.3的旧项目,通过brew安装了shivammathur/php/php@7.1(7.1.33版本),已成功安装mongodb扩展,但安装mcrypt-1.0.7时编译报错undefined reference to php_mcrypt_filter_create,项目依赖mcrypt_decrypt函数,无法更换替代方案。
解决方案步骤
1. 安装系统依赖的libmcrypt库
首先确保系统已安装mcrypt的底层依赖库:
brew install libmcrypt
2. 手动下载并编译mcrypt扩展源码
避免直接用pecl安装时的自动配置问题,手动编译指定依赖路径:
# 下载mcrypt-1.0.7源码包(可通过pecl命令:pecl download mcrypt-1.0.7) tar zxf mcrypt-1.0.7.tgz cd mcrypt-1.0.7 # 初始化编译环境(使用php@7.1的phpize) /usr/local/opt/php@7.1/bin/phpize # 配置编译参数,指定php-config和libmcrypt路径 ./configure \ --with-php-config=/usr/local/opt/php@7.1/bin/php-config \ --with-mcrypt=$(brew --prefix libmcrypt) # 编译并安装 make && make install
3. 启用mcrypt扩展
找到php@7.1的php.ini文件(通常路径为/usr/local/etc/php/7.1/php.ini),添加以下内容:
extension=mcrypt.so
4. 验证安装结果
执行命令验证扩展是否加载成功:
php71 -m | grep mcrypt
如果输出mcrypt,说明安装成功,此时mcrypt_decrypt函数即可正常使用。
额外排查点
- 如果
make仍报错,检查是否安装了Xcode Command Line Tools:xcode-select --install - 确认
brew --prefix libmcrypt输出的路径正确,若libmcrypt安装在其他路径,手动替换该参数值
内容的提问来源于stack exchange,提问作者Prabowo Murti
相关产品推荐
相关产品推荐

