centos7下php7.1.7安装pdo_pgsql扩展

本文介绍在CentOS7环境下,如何解决php未安装pdo_pgsql扩展的问题,通过源码编译的方式手动安装PDO_pgsql扩展,包括环境准备、编译步骤及配置php.ini的过程。

由于之前安装了postgresql数据库,但使用adminer连接时却显示php没有安装pdo_pgsql扩展。所以只能自己再编译了

环境

centos7: 内核版本:3.10.0-693.el7.x86_64
php7.1.7: 使用lnmp1.4脚本用源码进行编译获得

编译

找到之前lnmp脚本下载的php源码包,解压后找到pdo_pgsql扩展目录。

若文件中无config.m4文件,则将文件config0.m4替换成该文件

cp ./config0.m4 ./config.m4

1. phpize

2. ./configure --with-php-config=/usr/local/php/bin/php-config

3. make && make install

// 源码包目录
cd /root/lnmp/lnmp1.4/src
// 解压后找到 ./php-71.7/ext 目录,里面是php的各种扩展源码
cd ./php-71.7/ext/pdo_pgsql

// 在该源码目录下使用phpize工具
// phpize官方文档:http://php.net/manual/zh/install.pecl.phpize.php
phpize
// 输出结果类似
Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

// 配置编译,--with-php-config参数为php-config的文件目录,--with-pdo-pgsql参数为pg_config目录
// 官方文档:http://php.net/manual/en/ref.pdo-pgsql.php
./configure --with-php-config=/usr/local/php/bin/php-config
// 配置时可能需要安装libpq插件
yum install libpqxx-dev
// 安装完libpqxx-dev插件后,重新配置,成功后进行编译
make&&make install
// 完成后,输出类似如下
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/

配置php.ini

获得pdo_pgsql扩展的目录后,修改php.ini文件。可以直接在文件结尾处添加扩展配置。

 

// 获得php.ini目录
php --ini
// 修改文件,添加配置语句
// extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/pdo_pgsql.so
vim /usr/local/php/etc/php.ini
// 重启php
lnmp php-fpm restart
// 查看已安装的扩展
php -m

 

<think>我们正在讨论的是PHP编译安装时是否默认包含pdo_pgsql扩展。根据提供的引用和PHP的默认编译行为,我们可以得出以下结论: 1. **PHP默认编译行为**: - 在标准编译安装中,PHP**不会默认安装pdo_pgsql扩展**。这是因为PostgreSQL相关扩展需要额外的依赖(如libpq库)支持,且PHP默认配置不会主动包含它们。 2. **引用内容分析**: - 引用[2]明确展示了在CentOS下需要**手动编译安装pdo_pgsql扩展**的过程(通过进入扩展目录执行`phpize`等命令)。 - 引用[1]和[3]也分别展示了pdo_mysql和dblib扩展的手动安装过程,说明这些数据库驱动通常需要额外操作。 3. **编译时启用方法**: 若要在编译安装PHP时直接包含pdo_pgsql,需在`./configure`阶段添加参数: ```bash --with-pdo-pgsql=/path/to/postgresql # 指定PostgreSQL安装路径 ``` 同时需确保系统中已安装`libpq-dev`或`postgresql-devel`等开发包。 4. **验证方式**: 安装后可通过以下命令检查: ```bash php -i | grep pdo_pgsql ``` 若输出包含`pdo_pgsql`则表示已启用。 ### 解决方案: 若需使用pdo_pgsql,请选择以下任一方式: - **方案1(推荐)**:编译PHP时直接启用 ```bash # 安装依赖(CentOS示例) yum install -y postgresql-devel # 配置时添加参数 ./configure \ --prefix=/usr/local/php \ --with-pdo-pgsql=/usr/pgsql-12 # 根据实际路径调整 # ...其他参数 ``` - **方案2**:后续手动编译扩展(如引用[2]所示) > **注意**:路径`/usr/pgsql-12`需替换为实际PostgreSQL安装路径,可通过`pg_config`命令查询。 §§相关问题§§ 1. 如何确认服务器已安装PostgreSQL开发依赖? 2. 编译PHP时如何同时启用MySQL和PostgreSQL扩展? 3. 手动编译PHP扩展出现`php.h not found`错误如何解决?</think>### PHP编译安装pdo_pgsql扩展详解 #### 1. **默认安装行为** **PHP编译安装时不会默认安装pdo_pgsql扩展**。原因如下: - PostgreSQL相关扩展需要额外依赖(如libpq库) - 属于非核心数据库驱动,需显式启用[^2] - 编译脚本默认不包含PostgreSQL相关配置参数[^3] #### 2. **手动启用方法** 在编译时需添加特定参数: ```bash ./configure \ --with-pdo-pgsql=/path/to/postgresql \ # 指定PostgreSQL安装路径 --with-pgsql \ # 启用pgsql扩展 # ...其他参数... ``` #### 3. **验证是否安装成功** 安装后检查: ```bash # 查看已加载扩展 php -m | grep pdo_pgsql # 检查配置文件 grep "extension=pdo_pgsql" /path/to/php.ini ``` #### 4. **常见问题解决方案** **问题:编译时报错** ```text configure: error: Cannot find libpq-fe.h. Please specify correct PostgreSQL installation path ``` **解决:** 安装开发依赖包: ```bash # CentOS/RHEL yum install postgresql-devel # Ubuntu/Debian apt install libpq-dev ``` #### 5. **后安装扩展方法(推荐)** 若编译时遗漏,可参考引用[2]手动安装: ```bash # 进入PHP源码扩展目录 cd /path/to/php-src/ext/pdo_pgsql # 生成编译配置 phpize # 配置编译参数 ./configure --with-php-config=/path/to/php-config # 编译安装 make && make install # 添加扩展配置 echo "extension=pdo_pgsql.so" >> /path/to/php.ini ``` > **重要提示**: > 1. PostgreSQL服务必须**提前安装**并配置开发头文件[^2] > 2. 不同PHP版本扩展目录可能不同(如引用[1]中的`no-debug-non-zts-20131226`) > 3. 生产环境建议编译时直接启用,避免后期手动添加
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值