Mac Sierra下MAMP4.2.1安装PHP7.0.22 MongoDB驱动后Apache停止工作求助
这种情况我之前排查过好几次,核心原因是你用brew安装的MongoDB驱动和MAMP自带的PHP环境不兼容——brew编译的驱动是适配自身构建的PHP版本,而MAMP用的是独立打包的PHP环境,两者的编译参数、依赖库存在差异,加载驱动时会触发进程崩溃,最终Apache收到SIGTERM信号被迫终止。
试试下面的分步解决方案:
第一步:卸载brew安装的冲突驱动
先把之前用brew装的驱动删掉,避免后续环境干扰:brew uninstall php70-mongodb第二步:定位并清理MAMP的PHP配置文件
MAMP的PHP7.0.22配置文件路径一般是:/Applications/MAMP/bin/php/php7.0.22/conf/php.ini打开这个文件,确认之前手动添加的
extension="/usr/local/opt/php70-mongodb/mongodb.so"这行已经完全删除。第三步:用MAMP自带的pecl编译适配的驱动
这是解决兼容性问题的关键步骤,MAMP自带的pecl会针对当前PHP环境编译驱动,确保完全适配:- 终端切换到MAMP PHP的bin目录:
cd /Applications/MAMP/bin/php/php7.0.22/bin - 运行pecl安装MongoDB驱动:
安装过程中如果出现SSL、ICU相关的配置提示,直接按回车选择默认选项即可。./pecl install mongodb
- 终端切换到MAMP PHP的bin目录:
第四步:验证配置并重启Apache
安装完成后,pecl会自动在php.ini中添加驱动配置,你可以打开文件确认是否存在这一行:extension="mongodb.so"确认无误后,重启MAMP的Apache服务。
第五步:验证驱动是否生效
在MAMP的htdocs目录下创建一个phpinfo.php文件,内容如下:<?php phpinfo(); ?>访问该文件(比如
http://localhost/phpinfo.php),搜索mongodb,如果能看到完整的模块信息,说明问题已经解决。
关于日志里的SIGTERM说明
日志中的[notice] caught SIGTERM, shutting down是Apache收到了系统发送的终止信号,通常是因为加载了不兼容的扩展导致PHP进程崩溃,进而触发了Apache的终止流程。
内容的提问来源于stack exchange,提问作者navneet

