phpEnv 不能一键安装 PostgreSQL,它仅内置 MySQL、MariaDB 和 SQLite;使用 PostgreSQL 需手动安装服务端并启用 PHP 的 pgsql 扩展,否则调用 pg_connect() 或 PDO 连接会报“function not found”或“could not find driver”错误。
php
Env 本身不内置 PostgreSQL,也不能直接安装或管理 PostgreSQL 实例。它只负责 PHP、Apache/Nginx、MySQL 的集成与切换。想在 phpEnv 环境中使用 PostgreSQL,必须手动安装 PostgreSQL 并配置 PHP 的
扩展——否则
会报“function not found”或“undefined function”错误。
phpEnv 能否一键装 PostgreSQL?
不能。phpEnv 的官方安装包(截至 2026 年 4 月)仅包含 MySQL(5.7/8.0)、MariaDB 和 SQLite 支持,
不含 PostgreSQL 二进制文件、服务管理脚本或初始化工具
。试图在 phpEnv 控制面板里找“PostgreSQL 安装按钮”会落空。
常见误操作包括:
在 phpEnv 设置里勾选“启用 PostgreSQL”——该选项实际不存在,是用户凭经验脑补的
把 PostgreSQL 的
目录加进系统 PATH 后,以为 phpEnv 自动识别——但 phpEnv 不读取外部 PostgreSQL,只管自己 bundled 的 MySQL
用 phpEnv 启动 Apache 后,直接在 PHP 脚本里调用
——必然失败,因
扩展未启用
手动装 PostgreSQL + 配 PHP 的 pgsql 扩展
Windows 下推荐用
EnterpriseDB 官方安装包
(如 PostgreSQL 14.12 或 15.7),安装时勾选 “Add to PATH” 和 “Initialize database cluster”。装完后验证:
立即学习
“
PHP免费学习笔记(深入)
”;
若输出版本号,说明服务端就绪。接着配 PHP:
找到 phpEnv 当前激活的 PHP 版本目录,例如
编辑
,取消注释这一行:
(不是
,那是旧写法)
确认
指向正确的
目录,例如
重启 phpEnv 的 Apache 服务(或整个控制面板),再运行
,应看到
和
漏掉任意一步,
都会抛出
。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
ThinkPHP/Laravel 中配置多类型数据库(MySQL + PostgreSQL)
框架层面可以共存,但需严格区分连接名和驱动。以 ThinkPHP 6 为例:
在
中定义两个独立区块:
然后在
中显式声明连接:
关键点:
不同数据库必须用不同连接名(如
和
),不能都叫
ThinkPHP 不自动加载
前缀变量,必须在 config 里显式调用
读取
执行前务必清空缓存:
,否则改了
也无效
最易被忽略的是:PostgreSQL 的
默认拒绝所有远程连接,即使本地 PHP 脚本用
连,也可能被拦在门外。检查该文件末尾是否含这行:
。没有就加,加完要重启 PostgreSQL 服务。
pgsqlpg_connect()binpg_connect()pgsqlpsql --versionC:\phpenv\versions\8.3.13\php.iniextension=pgsqlphp_pdo_pgsql.dllextension_dirextextension_dir = "C:\phpenv\versions\8.3.13\ext"php -m | findstr pgsqlpgsqlpdo_pgsqlnew PDO('pgsql:host=127.0.0.1;dbname=test', $u, $p)PDOException: could not find driver.env[DATABASE]
TYPE=mysql
HOSTNAME=127.0.0.1
DATABASE=shop_db
USERNAME=root
PASSWORD=123456
[DATABASE_PG]
TYPE=pgsql
HOSTNAME=127.0.0.1
DATABASE=log_db
USERNAME=postgres
PASSWORD=123456
HOSTPORT=5432config/database.php'connections' => [
'mysql' => [
'type' => env('DATABASE_TYPE', 'mysql'),
'hostname' => env('DATABASE_HOSTNAME', '127.0.0.1'),
// ... 其他 MySQL 参数
],
'pgsql' => [
'type' => env('DATABASE_PG_TYPE', 'pgsql'),
'hostname' => env('DATABASE_PG_HOSTNAME', '127.0.0.1'),
'hostport' => env('DATABASE_PG_HOSTPORT', '5432'),
// ... 其他 PostgreSQL 参数
],
]mysqlpgsqldefaultDATABASE_PG_*env()php think clear:config.envpg_hba.conf127.0.0.1host all all 127.0.0.1/32 scram-sha-256