Mac 10.13编译PHP7添加--with-ldap时提示找不到php_pdo_driver.h怎么办?
解决Mac 10.13.4编译PHP 7.2.5带LDAP扩展的PDO检测错误
我之前在Mac环境编译PHP扩展时碰到过几乎一模一样的问题,你的错误本质是configure脚本在检测PDO依赖时,因为参数冲突或路径缺失导致解析失败,而添加LDAP参数触发了这个检测逻辑。下面是针对性的解决步骤:
1. 先补全系统依赖
Mac原生的OpenLDAP库可能不全,编译PHP LDAP扩展需要完整的开发库,用Homebrew安装最方便(没装Homebrew的话先装一个):
brew install openldap
安装完后,OpenLDAP的路径一般是/usr/local/opt/openldap,记下来后面要用。
2. 调整configure命令,明确指定PDO头文件路径
你遇到的Cannot find php_pdo_driver.h是因为configure没找到PHP源码里自带的PDO头文件,加上LDAP参数后这个检测逻辑被触发但路径没走对。修改你的configure命令,加上--with-pdo-include-dir指定源码内的PDO目录,同时用Homebrew的OpenLDAP路径:
./configure --prefix=/usr/local/php7 \ --with-apxs2=/usr/local/apache-2.4.33/bin/apxs \ --enable-exif \ --with-mysqli \ --with-curl \ --enable-ftp \ --with-gd \ --enable-mbstring \ --with-openssl=/usr/local/openssl \ --enable-sockets \ --with-zlib \ --with-ldap=/usr/local/opt/openldap \ --with-ldap-sasl \ --with-pdo-include-dir=./ext/pdo
这里--with-pdo-include-dir=./ext/pdo直接指向PHP源码里的PDO头文件位置,彻底解决找不到文件的问题;指定Homebrew的OpenLDAP路径也能避免原生库的缺失问题。
3. 清理编译缓存后重新编译
之前的configure可能留下了错误的缓存,先清理干净:
make clean ./buildconf --force
然后执行上面修改后的configure命令,接着编译安装:
make sudo make install
4. 验证扩展是否生效
安装完成后,用下面的命令检查LDAP扩展是否加载:
/usr/local/php7/bin/php -m | grep ldap
如果输出ldap,说明扩展安装成功。重启Apache后,WordPress的LDAP登录插件就能正常识别这个扩展了。
内容的提问来源于stack exchange,提问作者Bripakes
相关产品推荐
相关产品推荐

