如何在RHEL 7上实现PHP 7.1与PostgreSQL通信(Laravel场景)
解决RHEL7上PHP7.1(rh-php71)适配PostgreSQL扩展的问题
我来帮你搞定这个坑——你之前的操作出错是因为PHP扩展和主版本必须严格匹配,把PHP5.4的pgsql扩展硬塞给PHP7.1,肯定会因为版本不兼容炸锅,这完全是正常的。下面是正确的解决步骤:
先清理掉之前装的旧版本扩展,避免残留干扰:
yum remove php-pgsql安装对应rh-php71的PostgreSQL扩展包,RHEL7的软件集(SCL)里专门为PHP7.1提供了匹配的扩展,包名带
rh-php71-前缀:yum install rh-php71-php-pgsql安装完成后,重启你的PHP服务(根据你用的Web服务器选择命令):
- 如果用PHP-FPM:
systemctl restart rh-php71-php-fpm - 如果用Apache(已经启用rh-php71的模块):
systemctl restart httpd
- 如果用PHP-FPM:
最后验证扩展是否成功加载:
scl enable rh-php71 'php -m | grep pgsql'正常情况下会输出
pgsql和pdo_pgsql两个模块,说明扩展已经生效了。
为什么之前的方法行不通?
不同PHP版本的内部API是不一样的,PHP5.4编译出来的.so扩展文件,根本无法被PHP7.1的解释器识别,强行移动配置文件只会导致PHP进程抛出诸如undefined symbol的错误,甚至直接崩溃。所以一定要安装对应版本的扩展包,不要跨版本混用。
另外提醒一句:用SCL提供的PHP7.1时,所有相关的扩展都要安装带rh-php71-前缀的包,别再碰系统默认的PHP5.4包了,不然还会出各种版本不兼容的问题。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

