如何修复PHP警告:PHP Startup: 无法加载动态库 'xxx/xxx/yaf.so'?
[26-Nov-2021 21:49:17 Asia/Shanghai] PHP Warning: PHP Startup: Unable to load dynamic library '/Applications/MAMP/bin/php/php5.6.40/lib/php/extensions/no-debug-non-zts-20131226/yaf.so' - dlopen(/Applications/MAMP/bin/php/php5.6.40/lib/php/extensions/no-debug-non-zts-20131226/yaf.so, 0x0009): tried: '/Applications/MAMP/bin/php/php5.6.40/lib/php/extensions/no-debug-non-zts-20131226/yaf.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/usr/lib/yaf.so' (no such file) in Unknown on line 0
根因说明
该报错出现在Apple Silicon系列芯片的Mac设备上,当前已安装的yaf.so扩展为arm64架构,但你使用的MAMP集成环境下的PHP 5.6 为x86_64架构,架构不匹配导致扩展加载失败。
解决方案
可根据实际使用场景选择对应方案:
- 方案1:重新编译x86_64架构的yaf扩展(需要继续使用当前PHP 5.6版本时选择)
- 右键点击终端图标,选择「显示简介」,勾选「使用Rosetta打开」,重启终端
- 执行
arch命令验证终端架构,输出为x86_64即为符合要求 - 下载yaf 2.x版本源码(PHP 5.6仅支持yaf 2.x版本,不可使用3.x及以上版本)
- 进入源码目录后依次执行编译命令:
phpize ./configure --with-php-config=/Applications/MAMP/bin/php/php5.6.40/bin/php-config make && make install - 编译完成后重启MAMP的PHP服务,执行
/Applications/MAMP/bin/php/php5.6.40/bin/php -m | grep yaf验证扩展是否加载成功
- 方案2:切换为arm64架构的PHP版本(无强制PHP 5.6使用需求时选择)
更换支持Apple Silicon原生运行的arm64版PHP环境,再安装对应arm64架构的yaf扩展即可解决架构不匹配问题 - 方案3:临时禁用yaf扩展(无需使用yaf扩展时选择)
执行/Applications/MAMP/bin/php/php5.6.40/bin/php --ini查看php.ini路径,打开文件后找到extension=yaf.so配置项,在行首添加;注释该行,重启PHP服务即可消除警告
内容的提问来源于stack exchange,提问作者Waiho
相关产品推荐
相关产品推荐

