Skip to content

[TASK] Update DDEV to PHP 8.5 and Node.js 24#2

Closed
CybotTM wants to merge 2 commits intomainfrom
feature/ddev-update
Closed

[TASK] Update DDEV to PHP 8.5 and Node.js 24#2
CybotTM wants to merge 2 commits intomainfrom
feature/ddev-update

Conversation

@CybotTM
Copy link
Owner

@CybotTM CybotTM commented Feb 22, 2026

Summary

  • Update php_version from 8.1 (EOL Dec 2025) to 8.5 in .ddev/config.yaml
  • Update nodejs_version from 18 (EOL Apr 2025) to 24 (active LTS)
  • Local development only, does not affect CI or project PHP minimum

Test plan

  • ddev start succeeds with PHP 8.5
  • ddev npm-build works with Node.js 24

Copilot AI review requested due to automatic review settings February 22, 2026 11:25
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR attempts to update the DDEV local development environment to use newer versions of PHP and Node.js, citing end-of-life concerns for PHP 8.1 and Node.js 18. However, the versions specified (PHP 8.5 and Node.js 24) do not exist yet as of January 2025. The PR also adds PHP 8.5 to the CI workflow matrix, which contradicts the stated intent of affecting local development only.

Changes:

  • Updated php_version in .ddev/config.yaml from 8.1 to 8.5
  • Updated nodejs_version in .ddev/config.yaml from 18 to 24
  • Added PHP 8.5 to the CI workflow test matrix

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
.ddev/config.yaml Updates PHP version to 8.5 and Node.js version to 24 for DDEV local development environment
.github/workflows/main.yaml Adds PHP 8.5 to the CI test matrix

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- '8.2'
- '8.3'
- '8.4'
- '8.5'
Copy link

Copilot AI Feb 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change to the CI workflow contradicts the PR description, which explicitly states "Local development only, does not affect CI or project PHP minimum". Adding PHP 8.5 to the CI test matrix affects CI and should either be removed from this PR or the PR description should be updated to reflect this change.

Copilot uses AI. Check for mistakes.
@CybotTM CybotTM force-pushed the feature/ddev-update branch 5 times, most recently from 15387d2 to 437cd12 Compare March 1, 2026 13:26
CybotTM added 2 commits March 1, 2026 14:28
## Summary

Upgrade league/flysystem from abandoned v1 (EOL since 2022) to v3. The
upstream `phpdocumentor/guides` already supports flysystem v3 via its
`FileSystem` interface shim.

### Dependency changes

- `league/flysystem`: `^1.1.10` → `^3.29` (resolved: 3.32.0)
- `league/flysystem-local`: new transitive dependency (3.31.0)
- `phpdocumentor/flyfinder`: 1.1.0 → 2.0.0 (flysystem v3 compatible)

### Code changes

| File | Change |
|------|--------|
| `CopyResources.php` | `Adapter\Local` → `LocalFilesystemAdapter`,
`FilesystemException` try/catch/finally for both `readStream()` and
`putStream()` with proper stream cleanup |
| `TwigExtension.php` | `League\Flysystem\Exception` →
`League\Flysystem\FilesystemException` |
| `IncludeDirective.php` | Removed 3 `@throws FileNotFoundException`
docblocks (class removed in v3) |
| `SiteSetSettingsDirective.php` | Removed 1 `@throws
FileNotFoundException` docblock |
| Integration test logs | Updated expected error messages: "Path is
outside of the defined root" → "Path traversal detected" |

### Error handling

In v3, `readStream()` throws `UnableToReadFile` and `writeStream()`
throws `UnableToWriteFile` instead of returning false. A
`try/catch(FilesystemException)` block wraps both read and write
operations with a `finally` clause to ensure `fclose()` on the stream.
Individual file failures are logged and skipped — a single
unreadable/unwritable file will not abort the entire resource copy loop.

### Compatibility

The phpdocumentor `FileSystem` interface shim
(`phpdocumentor/filesystem`) provides backward compatibility. The
`FilesystemInterface` union type in `IncludeDirective` is preserved
since the shim provides a polyfill for the v1 interface.

## Test plan

- [x] PHPStan passes (0 errors)
- [x] Unit tests pass (83/83)
- [x] Integration tests pass (113/113)
- [x] CI green

Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
- Raise minimum PHP version from 8.1 to 8.2 across the project
- Update composer.json: php ^8.2, platform 8.2.28, replace polyfill-php82
- Update all sub-packages to require php ^8.2
- Add missing ext-* declarations to sub-packages:
  - typo3-docs-theme: add ext-dom (uses DOMDocument)
  - typo3-guides-cli: add ext-simplexml (uses SimpleXMLElement)
  - typo3-version-handling: add ext-curl (uses curl_* functions)
- Update PHPStan target version to 80200
- Update PHP-CS-Fixer migration ruleset to @PHP82Migration
- Remove PHP 8.1 from CI test matrix, set default to 8.2
- Update Dockerfile base image to php:8.2-cli-alpine
- Update DDEV to PHP 8.2 and Node.js 20

Signed-off-by: Sebastian Mendel <info@sebastianmendel.de>
@CybotTM CybotTM force-pushed the feature/ddev-update branch from 437cd12 to fc5064a Compare March 1, 2026 13:31
@CybotTM CybotTM closed this Mar 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants