Personally, I prefer phpPgAdmin over any other PostgreSQL UI tools due to its similarity to phpMyAdmin, which brings a sense of familiarity. Unfortunately, it appears that the developers behind this great tool have abandoned the project. Moreover, I am reluctant to run PHP 7 on my PC solely to support this tool. Therefore, my objective is to ensure full compatibility with PHP 8.2. I'm open to your PRs, so lets make this phpPgAdmin great again :)
php -S localhost:8800
This fork extends the PHP 8.2 compatibility work with full PostgreSQL 16 support, focusing on declarative partition visibility and additional PHP 8 modernization.
phpPgAdmin previously only showed child partition tables (e.g. orders_2024_01) and hid partitioned parent tables entirely. This fork makes all partition tables visible and navigable:
- Flat table list — parent and child partition tables appear together; child partitions are prefixed with
↳in the table list - Partition detail panel — partitioned parent table pages show partition method (RANGE/LIST/HASH), key, and a linked list of child partitions with bounds and row estimates
- Parent back-link — child partition table pages show a link back to the parent table
- "not analyzed" row counts — PostgreSQL 14+ uses
-1as a sentinel for tables that have never been analyzed; displays asnot analyzedinstead of a confusing-1
For databases using pre-declarative trigger-based inheritance (INHERITS):
- Table list — legacy inheritance children are prefixed with
↪(distinct from↳for native partitions) - Inherited Tables panel — parent table properties pages show a linked list of child tables
- Inherits from back-link — child table properties pages show links back to all parent tables (supports multiple-parent inheritance)
- Removed all
magic_quotes_gpc/magic_quotes_runtime/magic_quotes_sybasedead code (removed in PHP 5.4/8.0) - Removed
htmlspecialchars_decodepolyfill (built-in since PHP 5.1) - Fixed logic error in foreign key dimension parsing (
strlen($s - 1)→strlen($s) - 1) - Replaced deprecated
varproperty declarations with explicitpublicvisibility (76 occurrences across 25 class files) - Replaced
sizeof()alias withcount()(27 occurrences) - Fixed PHP 8 by-reference warning in
insertRow()— replacedarray_map('fieldClean', $fields)withfieldArrayClean() - Updated minimum PHP version requirement to 8.0
- Added PG14/15/16 routing in
Connection.phpand newPostgres14.php/Postgres15.phpsubclasses - Replaced deprecated
pg_escape_string()calls (no connection argument) withpg_escape_string($conn, ...)