From 2b970226fc86ea177b0180bc362ced985e8c9aaf Mon Sep 17 00:00:00 2001 From: Kacper Date: Thu, 10 Sep 2026 09:20:00 +0200 Subject: [PATCH] ci: require PHP 8.4, test 8.4 only composer.lock already pins packages that need PHP >= 8.4.1 (symfony/* v8, nesbot/carbon 3, laravel/pint), so `composer install` on the 8.2 / 8.3 CI legs has been failing since v1.0.0. Bump composer.json to "php": "^8.4", regenerate the lock platform block, drop 8.2 / 8.3 from the ci.yml matrix, and update the "PHP 8.2+" references in the docs. The Docker image was already php:8.4-apache. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01JKT9p3bfP8RZesExdYCS52 --- .github/workflows/ci.yml | 2 +- CLAUDE/AGENTS.md | 2 +- README.md | 6 +++--- composer.json | 2 +- composer.lock | 4 ++-- docs/CHANGELOG.md | 4 ++++ docs/installation.md | 4 ++-- docs/publishing.md | 2 +- 8 files changed, 15 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66f8fc8..96c97e0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - php: ['8.2', '8.3', '8.4'] + php: ['8.4'] steps: - uses: actions/checkout@v4 diff --git a/CLAUDE/AGENTS.md b/CLAUDE/AGENTS.md index 74c48d1..054ec7e 100644 --- a/CLAUDE/AGENTS.md +++ b/CLAUDE/AGENTS.md @@ -7,7 +7,7 @@ change the architecture. A Laravel 11 + [LdapRecord](https://ldaprecord.com/) web panel that manages an Active Directory domain: users, computers, groups and **read-only** GPO, plus a -dashboard and an org chart. PHP 8.2+. Interface is PL/EN. +dashboard and an org chart. PHP 8.4+. Interface is PL/EN. ## Golden rules diff --git a/README.md b/README.md index 825700a..58ea3fd 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ users, computers, groups and read-only Group Policy — built on Laravel 11 and [LdapRecord](https://ldaprecord.com/).** [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) -![PHP 8.2+](https://img.shields.io/badge/php-8.2%2B-777bb4.svg) +![PHP 8.4+](https://img.shields.io/badge/php-8.4%2B-777bb4.svg) ![Laravel 11](https://img.shields.io/badge/laravel-11-ff2d20.svg) ADconsole gives helpdesk and sysadmin staff a clean UI for the tasks that @@ -21,7 +21,7 @@ is no database copy of your directory to drift out of sync. access is limited to members of one AD group you nominate. - **Bilingual UI** — Polish and English, switchable per session. - **Deploys in minutes** — a `docker compose up` stack, or drop it on any - PHP 8.2+ host. + PHP 8.4+ host. > ⚠️ ADconsole performs privileged directory operations (password resets, > account enable/disable, deletions). Read [`SECURITY.md`](docs/SECURITY.md) and the @@ -46,7 +46,7 @@ Full walkthrough: [`docs/architecture.md`](docs/architecture.md). ## Requirements -- **PHP 8.2+** with `ldap`, `pdo_mysql` (or your DB driver), `mbstring`, `curl`, +- **PHP 8.4+** with `ldap`, `pdo_mysql` (or your DB driver), `mbstring`, `curl`, `zip`, `openssl` - **Composer 2** - A SQL database (MariaDB/MySQL recommended; SQLite/PostgreSQL work too) — for diff --git a/composer.json b/composer.json index 2d4a119..dbd3a25 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "keywords": ["laravel", "active-directory", "ldap", "ldaprecord", "admin-panel", "self-hosted"], "license": "MIT", "require": { - "php": "^8.2", + "php": "^8.4", "directorytree/ldaprecord-laravel": "^4.0", "laravel/framework": "^11.0", "laravel/tinker": "^2.9" diff --git a/composer.lock b/composer.lock index faca638..69e98eb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "df02946623d83c0aba5d3a95697f1a2d", + "content-hash": "7e2191fe362b1a9d8af556a317f82fc0", "packages": [ { "name": "brick/math", @@ -8966,7 +8966,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2" + "php": "^8.4" }, "platform-dev": {}, "plugin-api-version": "2.6.0" diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index c1d0719..67b2f1e 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -50,6 +50,10 @@ _Nothing yet._ `docker run --rm -v adconsole_db_data:/from -v "$PWD/docker/data/db":/to alpine cp -a /from/. /to/` (same for `adconsole_app_storage` → `docker/data/app_storage`). See [upgrading.md](upgrading.md#v110--docker-layout). +- **Minimum PHP is now 8.4** (`composer.json` `"php": "^8.4"`). The `composer.lock` + already pinned packages needing 8.4.1+ (`symfony/*` v8, `nesbot/carbon` 3, + `laravel/pint`), so 8.2 / 8.3 `composer install` was already failing. `ci.yml` + tests 8.4 only now; the Docker image was already `php:8.4-apache`. ## [1.0.0] - 2026-09-08 diff --git a/docs/installation.md b/docs/installation.md index df99fac..9df36a8 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -5,7 +5,7 @@ classic PHP host. ## 1. Prerequisites -- PHP **8.2+** with extensions: `ldap`, `pdo_mysql` (or `pdo_pgsql` / `pdo_sqlite`), +- PHP **8.4+** with extensions: `ldap`, `pdo_mysql` (or `pdo_pgsql` / `pdo_sqlite`), `mbstring`, `curl`, `zip`, `openssl`, `fileinfo`, `ctype`, `json` - Composer 2 - A web server (Apache with `mod_rewrite`, or nginx + PHP-FPM) @@ -119,7 +119,7 @@ server { } location ~ \.php$ { - fastcgi_pass unix:/run/php/php8.2-fpm.sock; + fastcgi_pass unix:/run/php/php8.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } diff --git a/docs/publishing.md b/docs/publishing.md index 7076598..93a2b84 100644 --- a/docs/publishing.md +++ b/docs/publishing.md @@ -85,7 +85,7 @@ git push origin v1.0.0 issues (Gitea has no Discussions). - The workflows in `.github/workflows/` are read by Gitea Actions if Actions is enabled on the instance (otherwise harmless): - - `ci.yml` — Pint + PHPUnit on PHP 8.2/8.3/8.4, on every push / PR. + - `ci.yml` — Pint + PHPUnit on PHP 8.4, on every push / PR. - `release.yml` — on a `vX.Y.Z` tag, builds `docker/php/Dockerfile` target `prod` and pushes `…/adconsole:{X.Y.Z, X.Y, latest}` to the instance's container registry. Needs `packages: write`; if the built-in token can't