MacOS Catalina配置Apache+PHP7.3.11+MongoDB时php.h缺失报错
解决Mac OS Catalina下安装MongoDB PHP扩展时找不到头文件的问题
我之前在Catalina上配置Apache+PHP+MongoDB技术栈的时候,也碰到过几乎一模一样的报错,折腾了好一阵子才搞定,给你几个针对性的解决步骤,你可以按顺序试试:
1. 先确认PHP开发文件的位置与完整性
首先打开终端,运行这条命令查看你的PHP对应的头文件目录:
php-config --include-dir
正常情况下,这个目录里应该同时存在php.h和Zend文件夹。如果输出的目录里只有php.h没有Zend,说明你的PHP缺少完整的开发组件:
- 如果你是通过Homebrew安装的PHP 7.3,先卸载重装一次(brew默认会包含开发包):
brew uninstall php@7.3 && brew install php@7.3 - 如果你用的是系统自带的PHP,Catalina默认把系统头文件移到了Xcode Command Line Tools的SDK目录里,需要先安装Command Line Tools:
xcode-select --install
2. 安装MongoDB扩展时强制指定PHP配置路径
很多时候报错是因为pecl默认调用了错误的PHP版本(比如系统自带和brew安装的PHP共存),或者找不到正确的头文件路径。安装时加上--with-php-config参数,指定你正在使用的PHP 7.3的php-config路径:
如果是brew安装的PHP 7.3:
pecl install mongodb --with-php-config=/usr/local/opt/php@7.3/bin/php-config
如果是系统自带的PHP 7.3:
CFLAGS="-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/php" LDFLAGS="-L/usr/lib" pecl install mongodb
这条命令强制告诉pecl去哪里找PHP的头文件,绕开默认路径的问题。
3. 确保Apache的PHP模块已正确启用
你提到httpd.conf里的LoadModule php7_module行是被注释的,这步一定要取消注释!找到这行:
#LoadModule php7_module libexec/apache2/libphp7.so
把前面的#删掉,然后重启Apache:
sudo apachectl restart
重启后可以在浏览器里放一个phpinfo()文件,确认PHP已经正常加载,并且版本是7.3.11,避免版本冲突。
4. 验证MongoDB扩展是否安装成功
安装完成后,打开终端运行:
php -m | grep mongodb
如果输出mongodb,说明扩展已经安装成功。再检查php.ini里是否已经自动添加了extension=mongodb.so(pecl安装通常会自动添加),如果没有的话手动加上,然后重启Apache即可。
内容的提问来源于stack exchange,提问作者user1480135
相关产品推荐
相关产品推荐

