编译php增加postgresql的pgsql和pdo_pgsql扩展模块

本文详细介绍了在lnpp环境中,如何通过使用phpize工具,实现从MySQL到PostgreSQL的平滑迁移,并确保PHP支持PostgreSQL扩展,包括编译配置、扩展添加和验证步骤。

lnpp环境,如果想把mysql换成postgresql,那么必须让php支持pgsql扩展。

为了不重新编译php,可以使用phpize工具进行追加。

1、进入php编译目录下的ext/pgsql/;

2、根据php安装路径执行/usr/local/php/bin/phpize ;

3、假如已经安装postgresql数据库;

4、运行./configure --with-php-config=/usr/local/php/bin/php-config

5、make && make install

6、修改php配置文件/usr/local/php-7.0.4/etc/php.ini,添加pgsql.so模块。

extension_dir = "/usr/local/php-7.0.4/lib/php/extensions/no-debug-non-zts-20151012"

extension=pgsql.so
extension=pdo_pgsql.so

重启php,检查phpinfo中是否有pgsql模块。

注:pdo_pgsql操作同上,pgsql.so和pdo_pgsql.so位置在/usr/local/php-7.0.4/lib/php/extensions/no-debug-non-zts-20151012

<think>我们正在讨论的是PHP编译安装时是否默认包含pdo_pgsql扩展。根据提供的引用PHP的默认编译行为,我们可以得出以下结论: 1. **PHP默认编译行为**: - 在标准编译安装中,PHP**不会默认安装pdo_pgsql扩展**。这是因为PostgreSQL相关扩展需要额外的依赖(如libpq库)支持,且PHP默认配置不会主动包含它们。 2. **引用内容分析**: - 引用[2]明确展示了在CentOS下需要**手动编译安装pdo_pgsql扩展**的过程(通过进入扩展目录执行`phpize`等命令)。 - 引用[1][3]也分别展示了pdo_mysqldblib扩展的手动安装过程,说明这些数据库驱动通常需要额外操作。 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时如何同时启用MySQLPostgreSQL扩展? 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、付费专栏及课程。

余额充值