HQD-191: Update PHP image to 8.5 in Docker Compose configuration#347
Conversation
📝 WalkthroughWalkthroughBoth ChangesPHP Runtime Version Upgrade
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
docker-compose.yml.dev (1)
29-29: ⚡ Quick winConsider updating Scrutinizer to PHP 8.5 for consistency.
The
.scrutinizer.ymlfile is configured to use PHP 8.3.3 for static analysis. While this won't prevent the application from running, having different PHP versions between your development environment (8.5) and CI/static analysis (8.3.3) can lead to inconsistencies in detecting version-specific issues.Once PHP 8.5 is confirmed stable and the dev environment is working well, consider updating
.scrutinizer.ymlto use PHP 8.5.x as well.As per relevant code snippets, Scrutinizer is configured with PHP version 8.3.3 (source: .scrutinizer.yml:1-14).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docker-compose.yml.dev` at line 29, Update the PHP version used by Scrutinizer to match the dev image: change the PHP version string in .scrutinizer.yml (currently "8.3.3") to an appropriate 8.5.x value (e.g., "8.5" or "8.5.x"), then run the Scrutinizer/CI checks to confirm no new issues; locate the PHP version setting in .scrutinizer.yml (the "php" / "tools" version key) to make the change.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docker-compose.yml.dev`:
- Line 29: Update the docker-compose reference and CI to explicitly validate PHP
8.5 compatibility: confirm the image tag used in docker-compose.yml.dev (the
image: hiqdev/php:8.5-fpm-alpine entry) is correct and, if desired, pin to a
specific digest to avoid silent drift; add CI matrix entries or a dedicated
workflow step to run unit/integration tests and static analysis against PHP 8.5
(in your repo’s CI config referencing the same hiqdev/php:8.5-fpm-alpine image),
and run deprecation/lint checks that catch 8.3→8.5 BC changes (search for
occurrences of disable_classes, backtick shell_exec usage, non-canonical casts,
etc.) and fix or add tests for any failing areas.
---
Nitpick comments:
In `@docker-compose.yml.dev`:
- Line 29: Update the PHP version used by Scrutinizer to match the dev image:
change the PHP version string in .scrutinizer.yml (currently "8.3.3") to an
appropriate 8.5.x value (e.g., "8.5" or "8.5.x"), then run the Scrutinizer/CI
checks to confirm no new issues; locate the PHP version setting in
.scrutinizer.yml (the "php" / "tools" version key) to make the change.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 08757952-f658-4687-9f61-1aaa61a60a72
📒 Files selected for processing (2)
docker-compose.yml.devdocker-compose.yml.local
|
|
||
| php-fpm: | ||
| image: hiqdev/php:8.3-fpm-alpine | ||
| image: hiqdev/php:8.5-fpm-alpine |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Verify the hiqdev/php:8.5-fpm-alpine Docker image exists on Docker Hub
# Check if the image exists and get its metadata
curl -s "https://hub.docker.com/v2/repositories/hiqdev/php/tags/8.5-fpm-alpine" | jq '{name: .name, last_updated: .last_updated, images: .images | length}'
# Also check what tags are available for hiqdev/php
curl -s "https://hub.docker.com/v2/repositories/hiqdev/php/tags?page_size=100" | jq '.results[] | select(.name | contains("8.")) | {name: .name, last_updated: .last_updated}' | head -20Repository: hiqdev/hipanel-core
Length of output: 556
🌐 Web query:
Has PHP 8.5 been officially released and what is its release date?
💡 Result:
Yes, PHP 8.5 has been officially released. It was released on November 20, 2025 [1][2][3].
Citations:
- 1: https://www.php.net/releases/8.5/
- 2: https://news-web.php.net/php.announce/474
- 3: https://github.com/php/php-src/blob/PHP-8.5.0/NEWS
🌐 Web query:
What are the breaking changes and new features in PHP 8.5?
💡 Result:
Breaking changes / backward-compatibility breaks in PHP 8.5 (focused on what PHP explicitly flags as incompatibilities or warnings/deprecations) 1) Removed - The disable_classes INI setting has been removed (it “causes various engine assumptions to be broken”) [1]. 2) Deprecated (and in some cases become warnings/errors in later versions) - Backtick operator as an alias for shell_exec is deprecated [1]. - Non-canonical cast names (boolean, integer, double, binary) are deprecated; use (bool), (int), (float), and (string) instead [1]. - Terminating case statements with a semicolon instead of a colon is deprecated [1]. - Using null as an array offset and in array_key_exists is deprecated; use an empty string instead [1]. - class_alias can no longer use "array" and "callable" as class alias names [1]. - sleep and wakeup are soft-deprecated (use serialize and unserialize) [1]. - Casting NAN to other types now emits a warning [1]. - Destructuring non-array values (other than null) using [] or list now emits a warning [1]. - Casting floats (or float-like strings) to int when the value can’t be represented as one now emits a warning [1]. 3) Additional incompatibilities called out in the official Upgrading guide (examples) - It is no longer possible to use "array" and "callable" as class alias names in class_alias [2]. New features in PHP 8.5 1) URI extension (built-in URL handling) - PHP 8.5 includes a built-in “URI” extension to parse, normalize, and handle URLs following RFC 3986 and WHATWG URL standards [1][3]. 2) Pipe operator: |> - PHP 8.5 adds the pipe (|>) operator for chaining callables left-to-right [4][3]. 3) Clone-with syntax - PHP 8.5 adds the ability to “clone with” property updates (e.g., supporting the “with-er” pattern for readonly classes) [1][3]. 4) #[\NoDiscard] attribute - PHP 8.5 introduces the #[\NoDiscard] attribute [5][3]. 5) Closures and first-class callables in constant expressions - PHP 8.5 supports using closures and first-class callables in constant expressions (including as attribute parameters) [4][3]. 6) PHP 8.5 feature list details (from the migration “new features” page) - The migration guide’s “New Features” page lists, among other items: the pipe operator (|>), closure/first-class callable support in constant expressions, #[\NoDiscard], and additional changes such as curl/EXIF-related additions [4]. Sources: PHP 8.5 release announcement + official migration guides and RFC/upgrade notes [1][4][3][6][2].
Citations:
- 1: https://www.php.net/releases/8.5/
- 2: https://raw.githubusercontent.com/php/php-src/PHP-8.5/UPGRADING
- 3: https://www.php.net/releases/8.5/en.php
- 4: https://www.php.net/manual/en/migration85.new-features.php
- 5: https://www.php.net/releases/8_5_0.php
- 6: https://www.php.net/manual/en/migration85.php
Confirm PHP 8.5 image/tag and focus on PHP 8.3→8.5 compatibility testing.
docker-compose.yml.devline 29 (image: hiqdev/php:8.5-fpm-alpine) exists on Docker Hub (tag8.5-fpm-alpine, last updated2026-04-22, 2 images), so the “tag missing” risk is addressed.- PHP 8.5 is officially released (Nov 20, 2025), but a PHP 8.3→8.5 upgrade can still break runtime behavior—review the documented BC breaks (e.g., removed
disable_classesINI; deprecated backtick alias forshell_exec; deprecated non-canonical cast names; other deprecations/incompatibilities called out in the 8.5 upgrading guide) and ensure the application is tested under PHP 8.5 (CI/tests/linting as applicable).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docker-compose.yml.dev` at line 29, Update the docker-compose reference and
CI to explicitly validate PHP 8.5 compatibility: confirm the image tag used in
docker-compose.yml.dev (the image: hiqdev/php:8.5-fpm-alpine entry) is correct
and, if desired, pin to a specific digest to avoid silent drift; add CI matrix
entries or a dedicated workflow step to run unit/integration tests and static
analysis against PHP 8.5 (in your repo’s CI config referencing the same
hiqdev/php:8.5-fpm-alpine image), and run deprecation/lint checks that catch
8.3→8.5 BC changes (search for occurrences of disable_classes, backtick
shell_exec usage, non-canonical casts, etc.) and fix or add tests for any
failing areas.
Summary by CodeRabbit