在不支持 PostgreSQL 10 的 Ubuntu 16.04 上安装 phpPgAdmin 5.1

Installing phpPgAdmin 5.1 on Ubuntu 16.04 with PostgreSQL 10 not supported

在我的 ubuntu 16.04

中基于 https://www.howtoforge.com/tutorial/ubuntu-postgresql-installation/ 安装

登录 http://localhost/phppgadmin/ PostgreSQL,浏览器显示 不支持的 PostgreSQL 版本。请升级到版本或更高版本。

有什么解决方案吗?

编辑 3:phpPgAdmin 再次积极开发!如果您下载最新版本,它支持 PostgreSQL 最多 v11.x

http://phppgadmin.sourceforge.net/doku.php?id=download https://github.com/phppgadmin/phppgadmin


phpPgAdmin 多年未得到积极开发。它仍然是 PostgreSQL 的一个很好的接口,但不幸的是它们只正式支持 9.2。我注意到最新版本仍然可以运行到 9.6,至少它在过去 6 个月的生产环境中,并且在此之前使用我拥有的任何东西(9.4 / 9.5?)多年。

我建议改为安装 9.6,然后从那里开始。

编辑:如果您热衷于使用 v10,那么您仍然可以使用 pgAdmin 4 作为界面,尽管这不是基于网络的。

参考:Official phpPgAdmin Website

EDIT2:请参阅 DTouch 的答案以获得良好的解决方法

其实你还是可以手动修改这个文件的:

classes/database/Connection.php

// Detect version and choose appropriate database driver
switch (substr($version,0,3)) {
    case '9.5': return 'Postgres'; break;
    case '9.4': return 'Postgres94'; break;
    case '9.3': return 'Postgres93'; break;
    case '9.2': return 'Postgres92'; break;
    case '9.1': return 'Postgres91'; break;
    case '9.0': return 'Postgres90'; break;
    case '8.4': return 'Postgres84'; break;
    case '8.3': return 'Postgres83'; break;
    case '8.2': return 'Postgres82'; break;
    case '8.1': return 'Postgres81'; break;
    case '8.0':
    case '7.5': return 'Postgres80'; break;
    case '7.4': return 'Postgres74'; break;
}

switch (substr($version,0,4)) {
    case '10.1': return 'Postgres'; break;
}

未完全测试,但所有主要功能都可以正常工作。

或者创建您自己的 https://github.com/phppgadmin/phppgadmin 和 create/fix 几个文件的分支以实现全面支持。

在 phppgadmin 文件夹中编辑文件 classes/database/Connection.php

在这一行之后添加: 案例'7.4':return 'Postgres74';打破;

键入或copy/paste此文本: 默认值:return 'Postgres';打破;

瞧瞧!

为了更清楚,完整路径是/usr/share/phppgadmin/classes/database/Connection。php

您也可以简单地添加

default: return 'Postgres'; break; 

在 switch 语句的末尾。

还需要登录的用户名应该是"postgres"。没有很好的记录。

在目录classes/database中 调整文件 connection.php 开关 (substr($version,0,3)) {

        case '9.2': return 'Postgres'; break;
        case '9.1': return 'Postgres91'; break;
        case '9.0': return 'Postgres90'; break;
        case '8.4': return 'Postgres84'; break;
        case '8.3': return 'Postgres83'; break;
        case '8.2': return 'Postgres82'; break;
        case '8.1': return 'Postgres81'; break;
        case '8.0':
        case '7.5': return 'Postgres80'; break;
        case '7.4': return 'Postgres74'; break;
        default: return 'Postgres'; break;
    }

它也适用于版本 10,没有问题。

当您收到以下错误消息时,这也解决了问题: 未定义的变量:postgresqlMinVer 不支持的 PostgreSQL 版本。请升级到版本或更高版本。

如果您正在使用 docker(使用我的 phppgadmin 分支,因为它修复了与较新的 posrgres 的兼容性):

FROM php:8-fpm-alpine

RUN apk add --no-cache --virtual \
     .build-deps git autoconf g++ make postgresql-dev \
  && docker-php-ext-install pgsql \
  && docker-php-ext-enable opcache \
  && apk add libpq ca-certificates curl apache2-proxy \
  && rm -rf /var/www/localhost/.git/ /var/www/localhost \
  && git clone https://github.com/idontusenumbers/phppgadmin.git /var/www/localhost/htdocs \
  && rm -rf /var/www/localhost/.git/ \
  && apk del .build-deps  \
  && rm -rf /tmp/* \
  && rm -rf /var/cache/apk/* \
  && rm /etc/init.d/apache2


RUN echo "ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/localhost/htdocs/" >> /etc/apache2/httpd.conf
RUN echo "DirectoryIndex index.php" >> /etc/apache2/httpd.conf