Windows下使用XAMPP调用pg_connect()出现未定义函数错误求助
看起来你已经尝试了一些基础操作,但核心问题是你只启用了PDO连接PostgreSQL的扩展,而pg_connect()属于原生PostgreSQL扩展,并未被加载。咱们一步步来解决:
第一步:确认你修改的是正确的php.ini文件
XAMPP里可能存在多个php.ini(比如Apache服务用的和CLI命令行用的),你改的可能不是当前Web服务加载的那一个。先新建一个info.php文件,内容如下:<?php phpinfo(); ?>在浏览器里运行这个文件,找到
Loaded Configuration File这一项,它显示的路径就是你需要修改的php.ini的真实位置,别再改错文件了!第二步:启用原生PostgreSQL扩展
打开正确的php.ini文件,找到extension=php_pgsql.dll这一行(不是你之前修改的php_pdo_pgsql.dll),把前面的分号;去掉。同时检查extension_dir的设置,确保它指向XAMPP的ext目录,比如:extension_dir = "ext"如果用绝对路径的话,要写成类似
extension_dir = "C:\xampp\php\ext"这样的正确路径。第三步:检查版本兼容性
确保你的PHP版本(从phpinfo页面查看)和PostgreSQL扩展的版本匹配,同时要注意32位/64位一致——比如XAMPP是64位的,PostgreSQL也要是64位的,不然扩展会加载失败。第四步:重启Apache服务
改完php.ini后,一定要在XAMPP控制面板里重启Apache服务,只重启XAMPP程序没用,必须重启对应的Web服务,让新的配置生效。第五步:验证扩展是否加载成功
再次运行info.php,在页面里搜索pgsql,如果能看到完整的pgsql模块信息,说明扩展已经加载成功了。这时候再运行你的connect.php,应该就能正常连接了。
另外提个小细节:你的代码里用的端口是5434,默认PostgreSQL监听的是5432,记得确认你的PostgreSQL配置文件postgresql.conf里的port参数确实设成了5434,并且PostgreSQL服务也重启过哦。
内容的提问来源于stack exchange,提问作者dimoles

