From 2662dc2d8beecaf830be2833098420c4c85b322d Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Wed, 10 Dec 2025 16:53:48 +0100 Subject: [PATCH 01/12] add PHP 8.5 --- .ci/packer_cache.sh | 3 +- .ci/shared.sh | 2 +- .github/workflows/loop.yml | 1 + .github/workflows/phpt.yml | 1 + .github/workflows/test.yml | 2 + agent/native/loader/code/phpdetection.cpp | 3 +- composer.json | 2 +- packaging/post-install.sh | 5 ++- packaging/test/docker-compose.yml | 38 +++++++++++++++++++ .../GenerateUnpackScriptsTest.php | 2 +- 10 files changed, 52 insertions(+), 7 deletions(-) diff --git a/.ci/packer_cache.sh b/.ci/packer_cache.sh index 3b947b728..ec7c534fb 100755 --- a/.ci/packer_cache.sh +++ b/.ci/packer_cache.sh @@ -16,6 +16,7 @@ php:8.1-fpm php:8.2-fpm php:8.3-fpm php:8.4-fpm +php:8.5-fpm ruby:2.7.1-alpine3.12 ubuntu:20.04 " @@ -27,7 +28,7 @@ if [ -x "$(command -v docker)" ]; then # Make sure list of PHP versions supported by the Elastic APM PHP Agent is in sync. # See the comment in .ci/shared.sh - for version in 7.2 7.3 7.4 8.0 8.1 8.2 8.3 8.4 + for version in 7.2 7.3 7.4 8.0 8.1 8.2 8.3 8.4 8.5 do PHP_VERSION=${version} make -f .ci/Makefile prepare || true DOCKERFILE=Dockerfile.alpine PHP_VERSION=${version} make -f .ci/Makefile prepare || true diff --git a/.ci/shared.sh b/.ci/shared.sh index 6d1641581..9d12a2d43 100644 --- a/.ci/shared.sh +++ b/.ci/shared.sh @@ -16,7 +16,7 @@ set -e # *) docker-compose.yml in packaging/test # -export ELASTIC_APM_PHP_TESTS_SUPPORTED_PHP_VERSIONS=(7.2 7.3 7.4 8.0 8.1 8.2 8.3 8.4) +export ELASTIC_APM_PHP_TESTS_SUPPORTED_PHP_VERSIONS=(7.2 7.3 7.4 8.0 8.1 8.2 8.3 8.4 8.5) export ELASTIC_APM_PHP_TESTS_SUPPORTED_LINUX_NATIVE_PACKAGE_TYPES=(apk deb rpm) export ELASTIC_APM_PHP_TESTS_SUPPORTED_LINUX_PACKAGE_TYPES=("${ELASTIC_APM_PHP_TESTS_SUPPORTED_LINUX_NATIVE_PACKAGE_TYPES[@]}" tar) diff --git a/.github/workflows/loop.yml b/.github/workflows/loop.yml index d1628ecd2..fbfc10446 100644 --- a/.github/workflows/loop.yml +++ b/.github/workflows/loop.yml @@ -24,6 +24,7 @@ jobs: - "8.2" - "8.3" - "8.4" + - "8.5" dockerfile: - "Dockerfile" - "Dockerfile.alpine" diff --git a/.github/workflows/phpt.yml b/.github/workflows/phpt.yml index 296bc51d9..1865906a0 100644 --- a/.github/workflows/phpt.yml +++ b/.github/workflows/phpt.yml @@ -29,6 +29,7 @@ jobs: - "8.2" - "8.3" - "8.4" + - "8.5" steps: # - uses: actions/checkout@v6 # - name: Fetch and extract latest release of apm-agent-php diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6fe4e5883..3b31e29bb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -59,6 +59,7 @@ jobs: - "8.2" - "8.3" - "8.4" + - "8.5" data: ${{ fromJson(needs.setup-build-matrix.outputs.matrix-combinations).include }} env: PHP_VERSION: ${{ matrix.php-version }} @@ -92,6 +93,7 @@ jobs: - "8.2" - "8.3" - "8.4" + - "8.5" dockerfile: - "Dockerfile" - "Dockerfile.alpine" diff --git a/agent/native/loader/code/phpdetection.cpp b/agent/native/loader/code/phpdetection.cpp index 42f58e653..64e724889 100644 --- a/agent/native/loader/code/phpdetection.cpp +++ b/agent/native/loader/code/phpdetection.cpp @@ -56,9 +56,10 @@ bool isThreadSafe() { std::tuple getZendModuleApiVersion(std::string_view zendVersion) { using namespace std::string_view_literals; - constexpr size_t knownVersionsCount = 17; + constexpr size_t knownVersionsCount = 18; constexpr std::array, knownVersionsCount> knownPhpVersions {{ + {"4.5"sv, 20250925, true}, // PHP 8.5 {"4.4"sv, 20240924, true}, // PHP 8.4 {"4.3"sv, 20230831, true}, // PHP 8.3 {"4.2"sv, 20220829, true}, // PHP 8.2 diff --git a/composer.json b/composer.json index 923abda65..7f6e6906c 100644 --- a/composer.json +++ b/composer.json @@ -8,7 +8,7 @@ { "name": "Sergey Kleyman" } ], "require": { - "php": "^7.2||8.0.*||8.1.*||8.2.*||8.3.*||8.4.*", + "php": "^7.2||8.0.*||8.1.*||8.2.*||8.3.*||8.4.*||8.5.*", "ext-json": "*", "ext-pcntl": "*", "psr/log": "^1.0" diff --git a/packaging/post-install.sh b/packaging/post-install.sh index 472af4852..5578a7a74 100755 --- a/packaging/post-install.sh +++ b/packaging/post-install.sh @@ -206,11 +206,12 @@ function is_php_supported() { [ "${PHP_MAJOR_MINOR}" == "8.1" ] || \ [ "${PHP_MAJOR_MINOR}" == "8.2" ] || \ [ "${PHP_MAJOR_MINOR}" == "8.3" ] || \ - [ "${PHP_MAJOR_MINOR}" == "8.4" ] + [ "${PHP_MAJOR_MINOR}" == "8.4" ] || \ + [ "${PHP_MAJOR_MINOR}" == "8.5" ] then return 0 else - echo 'Failed. The supported PHP versions are 7.2-8.4.' + echo 'Failed. The supported PHP versions are 7.2-8.5.' return 1 fi } diff --git a/packaging/test/docker-compose.yml b/packaging/test/docker-compose.yml index 85e9ff9ab..0d9ca1a03 100644 --- a/packaging/test/docker-compose.yml +++ b/packaging/test/docker-compose.yml @@ -1,5 +1,13 @@ version: "3" services: + deb-fpm-php85: + image: elasticobservability/apm-agent-php-dev:packages-test-deb-fpm-php-8.5-0.0.1 + build: + context: ubuntu + dockerfile: fpm/Dockerfile + args: + - PHP_VERSION=8.5 + - SEL_DISTRO=bookworm deb-fpm-php84: image: elasticobservability/apm-agent-php-dev:packages-test-deb-fpm-php-8.4-0.0.1 build: @@ -62,6 +70,14 @@ services: + deb-apache-php85: + image: elasticobservability/apm-agent-php-dev:packages-test-deb-apache-php-8.5-0.0.1 + build: + context: ubuntu + dockerfile: apache/Dockerfile + args: + - PHP_VERSION=8.5 + - SEL_DISTRO=bookworm deb-apache-php84: image: elasticobservability/apm-agent-php-dev:packages-test-deb-apache-php-8.4-0.0.1 build: @@ -122,6 +138,14 @@ services: - PHP_VERSION=7.2 + deb-php85: + image: elasticobservability/apm-agent-php-dev:packages-test-deb-php-8.5-0.0.1 + build: + context: ubuntu + dockerfile: Dockerfile + args: + - PHP_VERSION=8.5 + - SEL_DISTRO=bookworm deb-php84: image: elasticobservability/apm-agent-php-dev:packages-test-deb-php-8.4-0.0.1 build: @@ -181,6 +205,13 @@ services: args: - PHP_VERSION=7.2 + rpm-php85: + image: elasticobservability/apm-agent-php-dev:packages-test-rpm-php-8.5-0.1.1 + build: + context: fedora + dockerfile: Dockerfile + args: + - PHP_VERSION=8.5 rpm-php84: image: elasticobservability/apm-agent-php-dev:packages-test-rpm-php-8.4-0.1.1 build: @@ -238,6 +269,13 @@ services: args: - PHP_VERSION=7.2 + apk-php85: + image: elasticobservability/apm-agent-php-dev:packages-test-apk-php-8.5-0.0.1 + build: + context: alpine + dockerfile: Dockerfile + args: + - PHP_VERSION=8.5 apk-php84: image: elasticobservability/apm-agent-php-dev:packages-test-apk-php-8.4-0.0.1 build: diff --git a/tests/ElasticApmTests/ComponentTests/GenerateUnpackScriptsTest.php b/tests/ElasticApmTests/ComponentTests/GenerateUnpackScriptsTest.php index 60322db0d..3d9b39dd1 100644 --- a/tests/ElasticApmTests/ComponentTests/GenerateUnpackScriptsTest.php +++ b/tests/ElasticApmTests/ComponentTests/GenerateUnpackScriptsTest.php @@ -52,7 +52,7 @@ final class GenerateUnpackScriptsTest extends ComponentTestCaseBase implements L private const PHP_VERSION_7_4 = '7.4'; // Make sure list of PHP versions supported by the Elastic APM PHP Agent is in sync. // See the comment in .ci/shared.sh - private const SUPPORTED_PHP_VERSIONS = ['7.2', '7.3', self::PHP_VERSION_7_4, '8.0', '8.1', '8.2', '8.3', '8.4']; + private const SUPPORTED_PHP_VERSIONS = ['7.2', '7.3', self::PHP_VERSION_7_4, '8.0', '8.1', '8.2', '8.3', '8.4', '8.5']; private const LINUX_PACKAGE_TYPE_DEB = 'deb'; private const LINUX_PACKAGE_TYPE_RPM = 'rpm'; From f4433f7480b1246a0691c82b18d2cc1b0e6266b8 Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Wed, 10 Dec 2025 17:31:09 +0100 Subject: [PATCH 02/12] added missing php 8.5 changes --- .ci/Makefile | 4 ++ agent/native/CMakeLists.txt | 3 +- .../building/dependencies/php85/conandata.yml | 41 ++++++++++++++ .../building/dependencies/php85/conanfile.py | 56 +++++++++++++++++++ 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 agent/native/building/dependencies/php85/conandata.yml create mode 100644 agent/native/building/dependencies/php85/conanfile.py diff --git a/.ci/Makefile b/.ci/Makefile index acec7e96d..68bfacdfc 100644 --- a/.ci/Makefile +++ b/.ci/Makefile @@ -33,6 +33,10 @@ ifneq ($(PHP_VERSION), 7.2) SEL_DISTRO := bullseye endif +ifeq ($(PHP_VERSION), 8.5) + SEL_DISTRO := bookworm +endif + CONAN_USER_HOME:=/tmp/conan_user_home MAP_CONAN_HOME_TO_DOCKER_HOST_CMD_LINE_ARG:= diff --git a/agent/native/CMakeLists.txt b/agent/native/CMakeLists.txt index 22252ec7b..3b6e129c1 100644 --- a/agent/native/CMakeLists.txt +++ b/agent/native/CMakeLists.txt @@ -43,7 +43,7 @@ include(elastic_conan_debugsymbols) # Install project dependencies -set(_supported_php_versions 72 73 74 80 81 82 83 84) +set(_supported_php_versions 72 73 74 80 81 82 83 84 85) function(get_php_api_from_release php_version ret_val) block(SCOPE_FOR VARIABLES) @@ -55,6 +55,7 @@ function(get_php_api_from_release php_version ret_val) set(_php_release_82 20220829) set(_php_release_83 20230831) set(_php_release_84 20240924) + set(_php_release_85 20250925) set(${ret_val} ${_php_release_${php_version}}) return(PROPAGATE ${ret_val}) diff --git a/agent/native/building/dependencies/php85/conandata.yml b/agent/native/building/dependencies/php85/conandata.yml new file mode 100644 index 000000000..2eca7a06f --- /dev/null +++ b/agent/native/building/dependencies/php85/conandata.yml @@ -0,0 +1,41 @@ +name: "php-headers-85" +version: "1.0" +php_source_version: 8.5.0 + +sources: + 7.2.34: + linux: + - url: "https://www.php.net/distributions/php-7.2.34.tar.gz" + contentsRoot: "php-7.2.34" + 7.3.33: + linux: + - url: "https://www.php.net/distributions/php-7.3.33.tar.gz" + contentsRoot: "php-7.3.33" + 7.4.33: + linux: + - url: "https://www.php.net/distributions/php-7.4.33.tar.gz" + contentsRoot: "php-7.4.33" + 8.0.28: + linux: + - url: "https://www.php.net/distributions/php-8.0.28.tar.gz" + contentsRoot: "php-8.0.28" + 8.1.18: + linux: + - url: "https://www.php.net/distributions/php-8.1.18.tar.gz" + contentsRoot: "php-8.1.18" + 8.2.5: + linux: + - url: "https://www.php.net/distributions/php-8.2.5.tar.gz" + contentsRoot: "php-8.2.5" + 8.3.2: + linux: + - url: "https://www.php.net/distributions/php-8.3.2.tar.gz" + contentsRoot: "php-8.3.2" + 8.4.1: + linux: + - url: "https://www.php.net/distributions/php-8.4.1.tar.gz" + contentsRoot: "php-8.4.1" + 8.5.0: + linux: + - url: "https://www.php.net/distributions/php-8.5.0.tar.gz" + contentsRoot: "php-8.5.0" diff --git a/agent/native/building/dependencies/php85/conanfile.py b/agent/native/building/dependencies/php85/conanfile.py new file mode 100644 index 000000000..2f1ec5fcc --- /dev/null +++ b/agent/native/building/dependencies/php85/conanfile.py @@ -0,0 +1,56 @@ +import os +import shutil + +from conans import tools, ConanFile, AutoToolsBuildEnvironment + +class PhpHeadersForPHP81Conan(ConanFile): + description = "PHP headers package required to build Elastic APM agent without additional PHP dependencies" + license = "The PHP License, version 3.01" + homepage = "https://php.net/" + url = "https://php.net/" + author = "pawel.filipczak@elastic.co" + + settings = "os", "compiler", "build_type", "arch" + platform = "linux" + + def init(self): + self.name = self.conan_data["name"] + self.version = self.conan_data["version"] # version of the package + self.php_version = self.conan_data["php_source_version"] # version of the PHP to build + self.source_temp_dir = "php-src" + + def requirements(self): + self.requires("libxml2/2.9.9") + self.requires("sqlite3/3.29.0") + + def source(self): + for source in self.conan_data["sources"][self.php_version][self.platform]: + + if "contentsRoot" in source: + # small hack - it can't contain custom fields, so we're removing it from source (got an unexpected keyword argument) + contentRoot = source["contentsRoot"] + del source["contentsRoot"] + tools.get(**source) + os.rename(contentRoot, self.source_temp_dir) + else: + self.output.error("Could not find 'contentsRoot' in conandata.yml") + raise Exception("Could not find 'contentsRoot' in conandata.yml") + + def build(self): + with tools.chdir(os.path.join(self.source_folder, self.source_temp_dir)): + buildEnv = AutoToolsBuildEnvironment(self) + envVariables = buildEnv.vars + envVariables['ac_cv_php_xml2_config_path'] = os.path.join(self.deps_cpp_info["libxml2"].rootpath, "bin/xml2-config") + envVariables['LIBXML_LIBS'] = os.path.join(self.deps_cpp_info["libxml2"].rootpath, self.deps_cpp_info["libxml2"].libdirs[0]) + envVariables['LIBXML_CFLAGS'] = "-I{}".format(os.path.join(self.deps_cpp_info["libxml2"].rootpath, self.deps_cpp_info["libxml2"].includedirs[0])) + envVariables['SQLITE_LIBS'] = os.path.join(self.deps_cpp_info["sqlite3"].rootpath, self.deps_cpp_info["sqlite3"].libdirs[0]) + envVariables['SQLITE_CFLAGS'] = "-I{}".format(os.path.join(self.deps_cpp_info["sqlite3"].rootpath, self.deps_cpp_info["sqlite3"].includedirs[0])) + self.run("./buildconf --force") + buildEnv.configure(args=[""], vars=envVariables, build=False, host=False) + + def package(self): + source = os.path.join(self.source_folder, self.source_temp_dir) + self.copy("*.h", src=source, dst='include', keep_path=True) + + def package_id(self): + del self.info.settings.compiler.version From 8e51e35c8444be4cb13d54b8ff2afc426bbc97dc Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Thu, 11 Dec 2025 13:24:49 +0100 Subject: [PATCH 03/12] push version check to 8.5 --- agent/native/ext/AST_instrumentation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/native/ext/AST_instrumentation.cpp b/agent/native/ext/AST_instrumentation.cpp index 360f79aa2..8bab47ca9 100644 --- a/agent/native/ext/AST_instrumentation.cpp +++ b/agent/native/ext/AST_instrumentation.cpp @@ -195,7 +195,7 @@ bool isZendAstListKind( zend_ast_kind kind ) * - Increment minor part of PHP version in static_assert below */ static_assert( - PHP_VERSION_ID < ELASTIC_APM_BUILD_PHP_VERSION_ID( 8, 5, 0 ), + PHP_VERSION_ID < ELASTIC_APM_BUILD_PHP_VERSION_ID( 8, 6, 0 ), "Make sure g_astNodeMaxChildCount is correct. See max number of children in enum _zend_ast_kind in /Zend/zend_ast.h" ); static constexpr size_t g_astNodeMaxChildCount = From 3098eecb4494ef3cf730ecd66c08389dae5553ed Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Thu, 11 Dec 2025 20:48:30 +0100 Subject: [PATCH 04/12] fix build for php 8.5 --- agent/native/ext/AST_debug.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/agent/native/ext/AST_debug.cpp b/agent/native/ext/AST_debug.cpp index cbe148df1..3b20eca31 100644 --- a/agent/native/ext/AST_debug.cpp +++ b/agent/native/ext/AST_debug.cpp @@ -75,7 +75,7 @@ String zendAstKindToString( zend_ast_kind kind ) return (#enumMember) \ /**/ - // Up to date with PHP v8.3.2 + // Up to date with PHP v8.5.0 switch ( kind ) { /** @@ -97,7 +97,9 @@ String zendAstKindToString( zend_ast_kind kind ) ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_CLASS ); ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_CLASS_CONST ); ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_CLASS_CONST_DECL ); + #if PHP_VERSION_ID < ELASTIC_APM_BUILD_PHP_VERSION_ID( 8, 5, 0 ) /* removed in PHP 8.5 */ ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_CLONE ); + #endif ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_CLOSURE ); ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_CLOSURE_USES ); ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_COALESCE ); @@ -112,7 +114,9 @@ String zendAstKindToString( zend_ast_kind kind ) ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_ECHO ); ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_EMPTY ); ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_ENCAPS_LIST ); + #if PHP_VERSION_ID < ELASTIC_APM_BUILD_PHP_VERSION_ID( 8, 5, 0 ) /* removed in PHP 8.5 */ ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_EXIT ); + #endif ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_EXPR_LIST ); ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_FOR ); ELASTIC_APM_GEN_ENUM_TO_STRING_SWITCH_CASE( ZEND_AST_FOREACH ); From ee949c22e5a879b53e836d6c760daedf2a857990 Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Tue, 23 Dec 2025 09:11:41 +0100 Subject: [PATCH 05/12] do not install opcache for PHP 8.5. it is now non-optional --- Dockerfile | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index bfb2c2326..fbf03344e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,11 +19,13 @@ RUN apt-get -qq update \ wget \ && rm -rf /var/lib/apt/lists/* -RUN docker-php-ext-install \ - mysqli \ - pcntl \ - pdo_mysql \ - opcache +RUN MODULES="mysqli pcntl pdo_mysql"; \ + if [ "${PHP_VERSION}" = "8.5" ]; then \ + :; \ + else \ + MODULES="$MODULES opcache"; \ + fi; \ + docker-php-ext-install $MODULES COPY --from=composer:latest /usr/bin/composer /usr/bin/composer From 1e9161b8aad23e5f58a39cf7d475fe8ee789ab99 Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Tue, 23 Dec 2025 10:12:33 +0100 Subject: [PATCH 06/12] fix build for PHP 8.5 --- Dockerfile | 9 ++++----- Dockerfile.alpine | 11 ++++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index fbf03344e..ecb903d1e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,11 +20,10 @@ RUN apt-get -qq update \ && rm -rf /var/lib/apt/lists/* RUN MODULES="mysqli pcntl pdo_mysql"; \ - if [ "${PHP_VERSION}" = "8.5" ]; then \ - :; \ - else \ - MODULES="$MODULES opcache"; \ - fi; \ + case "${PHP_VERSION}" in \ + 8.5*) ;; \ + *) MODULES="$MODULES opcache" ;; \ + esac; \ docker-php-ext-install $MODULES COPY --from=composer:latest /usr/bin/composer /usr/bin/composer diff --git a/Dockerfile.alpine b/Dockerfile.alpine index 5235c2da8..bcbf4aed2 100644 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -12,11 +12,12 @@ RUN apk update \ git \ unzip -RUN docker-php-ext-install \ - mysqli \ - pcntl \ - pdo_mysql \ - opcache +RUN MODULES="mysqli pcntl pdo_mysql"; \ + case "${PHP_VERSION}" in \ + 8.5*) ;; \ + *) MODULES="$MODULES opcache" ;; \ + esac; \ + docker-php-ext-install $MODULES COPY --from=composer:latest /usr/bin/composer /usr/bin/composer From 0f8e8a4ac35be57abc7d66d5671962d7f56f9421 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 13:03:01 +0100 Subject: [PATCH 07/12] build(deps): bump the github-actions group with 2 updates (#1399) Bumps the github-actions group with 2 updates: [actions/download-artifact](https://github.com/actions/download-artifact) and [actions/upload-artifact](https://github.com/actions/upload-artifact). Updates `actions/download-artifact` from 6 to 7 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v6...v7) Updates `actions/upload-artifact` from 5 to 6 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions - dependency-name: actions/upload-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-packages.yml | 6 +++--- .github/workflows/build.yml | 2 +- .github/workflows/cache.yml | 4 ++-- .github/workflows/phpt.yml | 4 ++-- .github/workflows/release.yml | 6 +++--- .github/workflows/test-packages.yml | 12 ++++++------ .github/workflows/test.yml | 4 ++-- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build-packages.yml b/.github/workflows/build-packages.yml index ba099af9f..18768c6e4 100644 --- a/.github/workflows/build-packages.yml +++ b/.github/workflows/build-packages.yml @@ -21,11 +21,11 @@ jobs: BUILD_ARCH: ${{ matrix.BUILD_ARCH }} steps: - uses: actions/checkout@v6 - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: package-parts-linux-${{ matrix.BUILD_ARCH }} path: agent/native/_build/linux-${{ matrix.BUILD_ARCH }}-release/ - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: package-parts-linuxmusl-${{ matrix.BUILD_ARCH }} path: agent/native/_build/linuxmusl-${{ matrix.BUILD_ARCH }}-release/ @@ -39,7 +39,7 @@ jobs: run: make -C packaging package - name: package info run: make -C packaging info - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 with: name: packages-${{ matrix.BUILD_ARCH }} path: | diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0d1fcdde1..5615b7b99 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -48,7 +48,7 @@ jobs: echo "Detected CPUs: $(nproc)" make -f .ci/Makefile build - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 with: name: package-parts-${{ matrix.arch }} path: | diff --git a/.github/workflows/cache.yml b/.github/workflows/cache.yml index 6bfeabc70..8a65beba2 100644 --- a/.github/workflows/cache.yml +++ b/.github/workflows/cache.yml @@ -27,12 +27,12 @@ jobs: - name: Checkout repository uses: actions/checkout@v6 - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: package-parts-linux-x86-64 path: agent/native/_build/linux-x86-64-release/ - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: package-parts-linuxmusl-x86-64 path: agent/native/_build/linuxmusl-x86-64-release/ diff --git a/.github/workflows/phpt.yml b/.github/workflows/phpt.yml index 1865906a0..e52d59a18 100644 --- a/.github/workflows/phpt.yml +++ b/.github/workflows/phpt.yml @@ -40,7 +40,7 @@ jobs: # tar --wildcards --strip-components 5 -xf /tmp/apm-agent-php-linux-x86-64.tar ./opt/elastic/apm-agent-php/extensions/elastic_apm* # cd - - uses: actions/checkout@v6 - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: package-parts-linux-x86-64 path: | @@ -64,7 +64,7 @@ jobs: sudo chmod -R 777 agent/extension_phpt_test/results sudo chown -R $(id -u):$(id -g) agent/extension_phpt_test/results - if: success() || failure() - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 continue-on-error: true with: name: phpt-test-results-${{ matrix.php-version }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index addd08ab2..6c586aa5f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -54,7 +54,7 @@ jobs: - uses: actions/checkout@v6 - name: Download package artifacts - uses: actions/download-artifact@v6 + uses: actions/download-artifact@v7 with: pattern: packages-* path: ${{ env.BUILD_PACKAGES }} @@ -105,7 +105,7 @@ jobs: # this artifact name is used also in some other places, # such as ./.github/workflows/test-packages.yml. # Therefore v4 cannot be used at the moment. - - uses: actions/upload-artifact@v5 + - uses: actions/upload-artifact@v6 with: name: signed-artifacts path: signed-artifacts.zip @@ -140,7 +140,7 @@ jobs: steps: - uses: actions/checkout@v6 - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: signed-artifacts path: ${{ env.BUILD_PACKAGES }} diff --git a/.github/workflows/test-packages.yml b/.github/workflows/test-packages.yml index bb0253e69..3b2217e04 100644 --- a/.github/workflows/test-packages.yml +++ b/.github/workflows/test-packages.yml @@ -42,13 +42,13 @@ jobs: steps: - uses: actions/checkout@v6 - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 if: ${{ inputs.package-name }} with: name: ${{ inputs.package-name }} path: ${{ env.BUILD_PACKAGES }} - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 if: ${{ ! inputs.package-name }} with: pattern: 'package*' @@ -70,12 +70,12 @@ jobs: env: PACKAGE_FILE: "${{ inputs.package-name }}.zip" - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: package-parts-linux-x86-64 path: agent/native/_build/linux-x86-64-release - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: package-parts-linuxmusl-x86-64 path: agent/native/_build/linuxmusl-x86-64-release @@ -124,7 +124,7 @@ jobs: \; - if: success() || failure() - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: test-results-${{ env.ELASTIC_APM_PHP_TESTS_MATRIX_ROW }} path: build/*junit.xml @@ -140,7 +140,7 @@ jobs: find . -name "syslog" -exec bash -c 'cp {} "../syslog-files/${ELASTIC_APM_PHP_TESTS_MATRIX_ROW//[^[:alnum:]]/-}-$(basename {})"' \; find . -name "messages" -exec bash -c 'cp {} "../syslog-files/${ELASTIC_APM_PHP_TESTS_MATRIX_ROW//[^[:alnum:]]/-}-$(basename {})"' \; - if: failure() - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 continue-on-error: true with: name: syslogs-${{ env.ELASTIC_APM_PHP_TESTS_MATRIX_ROW }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3b31e29bb..a243fad33 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -66,7 +66,7 @@ jobs: BUILD_ARCHITECTURE: ${{ matrix.data.arch }} steps: - uses: actions/checkout@v6 - - uses: actions/download-artifact@v6 + - uses: actions/download-artifact@v7 with: name: package-parts-${{ matrix.data.arch }} path: agent/native/_build/${{ matrix.data.arch }}-release/ @@ -114,7 +114,7 @@ jobs: -exec bash -c 'mv {} "build/${PHP_VERSION}-${DOCKERFILE}-$(basename {})"' \; - if: success() || failure() - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: test-results-${{ matrix.php-version }}-${{ matrix.dockerfile }} path: build/*junit.xml From 7b8602c4c7567f58f1cebc108590d3ed3995e77d Mon Sep 17 00:00:00 2001 From: Sergey Kleyman Date: Tue, 16 Dec 2025 15:12:04 +0200 Subject: [PATCH 08/12] Docs: Added limits on supported versions on where they were missing (#1396) * Added supported versions of Guzzle HTTP client to the docs * Clarified which versions of curl extension is supported * Clarified which versions of Framework-less PHP application are supported * Update docs/reference/supported-technologies.md Co-authored-by: Colleen McGinnis * Update docs/reference/supported-technologies.md Co-authored-by: Colleen McGinnis --------- Co-authored-by: Colleen McGinnis --- docs/reference/supported-technologies.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/reference/supported-technologies.md b/docs/reference/supported-technologies.md index 8d16d36e7..4485d8068 100644 --- a/docs/reference/supported-technologies.md +++ b/docs/reference/supported-technologies.md @@ -37,7 +37,7 @@ We support automatic instrumentation for the following web frameworks. | Framework | Supported versions | | --- | --- | -| Framework-less PHP application (i.e., application using PHP’s built in web support) | | +| Framework-less PHP application (i.e., application using PHP’s built in web support) | any version bundled with a [supported PHP version](#supported-php-versions) | | Laravel | 6, 7, 8, 9, 10 | | WordPress | 5, 6 | @@ -56,10 +56,10 @@ We support automatic instrumentation for the following data access technologies. Automatic instrumentation for an HTTP client technology means an HTTP span is automatically created for each outgoing HTTP request and distributed tracing headers are propagated. The spans are named after the schema ` `, for example `GET elastic.co`. -| Framework | Supported versions | -| --- | --- | -| `curl` extension | | -| `Guzzle` library | | +| Framework | Supported versions | +|------------------|--------------------| +| `curl` extension | any version bundled with a [supported PHP version](#supported-php-versions) | +| `Guzzle` library | 6, 7 | ## Capturing PHP errors as APM error events [supported-php-errors] From a9e05ea437b00d5c404b2b9980781d1a4766325a Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Fri, 30 Jan 2026 13:35:21 +0100 Subject: [PATCH 09/12] fix tests --- Dockerfile | 23 +- Dockerfile.alpine | 13 +- agent/extension_phpt_test/docker-compose.yml | 326 +++++++++++-------- agent/extension_phpt_test/images/Dockerfile | 7 +- agent/extension_phpt_test/scripts/run.sh | 6 + 5 files changed, 226 insertions(+), 149 deletions(-) diff --git a/Dockerfile b/Dockerfile index ecb903d1e..d58a8f2ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,17 +12,17 @@ RUN if [ ${PHP_VERSION} = 7.2 ] && [ ${SEL_DISTRO} = buster ]; then \ RUN apt-get -qq update \ && apt-get -qq -y --no-install-recommends install \ - procps \ - rsyslog \ - curl \ - unzip \ - wget \ - && rm -rf /var/lib/apt/lists/* + procps \ + rsyslog \ + curl \ + unzip \ + wget \ + && rm -rf /var/lib/apt/lists/* RUN MODULES="mysqli pcntl pdo_mysql"; \ case "${PHP_VERSION}" in \ - 8.5*) ;; \ - *) MODULES="$MODULES opcache" ;; \ + 8.5*) ;; \ + *) MODULES="$MODULES opcache" ;; \ esac; \ docker-php-ext-install $MODULES @@ -39,4 +39,9 @@ ENV TEST_PHP_JUNIT=/app/build/junit.xml ENV ELASTIC_APM_ENABLED=false # Create a link to extensions directory to make it easier accessible (paths are different between php releases) -RUN ln -s `find /usr/local/lib/php/extensions/ -name opcache.so | head -n1 | xargs dirname` /tmp/extensions +RUN OPCACHE_PATH=$(find /usr/local/lib/php/extensions/ -name opcache.so -o -name opcache.a | head -n1); \ + if [ -z "$OPCACHE_PATH" ]; then \ + ln -s $(find /usr/local/lib/php/extensions/ -type d | head -n1) /tmp/extensions; \ + else \ + ln -s $(dirname "$OPCACHE_PATH") /tmp/extensions; \ + fi diff --git a/Dockerfile.alpine b/Dockerfile.alpine index bcbf4aed2..2ec7c0c56 100644 --- a/Dockerfile.alpine +++ b/Dockerfile.alpine @@ -2,7 +2,7 @@ ARG PHP_VERSION=7.2 FROM php:${PHP_VERSION}-fpm-alpine RUN apk update \ - && apk add \ + && apk add \ bash \ logrotate \ procps \ @@ -14,8 +14,8 @@ RUN apk update \ RUN MODULES="mysqli pcntl pdo_mysql"; \ case "${PHP_VERSION}" in \ - 8.5*) ;; \ - *) MODULES="$MODULES opcache" ;; \ + 8.5*) ;; \ + *) MODULES="$MODULES opcache" ;; \ esac; \ docker-php-ext-install $MODULES @@ -32,4 +32,9 @@ ENV TEST_PHP_JUNIT=/app/build/junit.xml ENV ELASTIC_APM_ENABLED=false # Create a link to extensions directory to make it easier accessible (paths are different between php releases) -RUN ln -s `find /usr/local/lib/php/extensions/ -name opcache.so | head -n1 | xargs dirname` /tmp/extensions +RUN OPCACHE_PATH=$(find /usr/local/lib/php/extensions/ -name opcache.so -o -name opcache.a | head -n1); \ + if [ -z "$OPCACHE_PATH" ]; then \ + ln -s $(find /usr/local/lib/php/extensions/ -type d | head -n1) /tmp/extensions; \ + else \ + ln -s $(dirname "$OPCACHE_PATH") /tmp/extensions; \ + fi diff --git a/agent/extension_phpt_test/docker-compose.yml b/agent/extension_phpt_test/docker-compose.yml index e9ed3e29e..2c53a953e 100644 --- a/agent/extension_phpt_test/docker-compose.yml +++ b/agent/extension_phpt_test/docker-compose.yml @@ -1,141 +1,197 @@ version: "2.1" services: - phpt_72: - build: - context: . - dockerfile: images/Dockerfile - args: - PHP_VERSION: 7.2 - networks: - - elastic-net - volumes: - - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini - - ../native/_build/linux-x86-64-release/ext:/opt/elastic - - ../php:/opt/elastic/php - - ./results:/results - - ./allowedToFailLists/:/allowedToFailLists - - ./baselineFailures/:/baselineFailures/ - - ./testsToRemove/:/testsToRemove/ - depends_on: - - elasticsearch - - apm-server - phpt_73: - build: - context: . - dockerfile: images/Dockerfile - args: - PHP_VERSION: 7.3 - networks: - - elastic-net - volumes: - - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini - - ../native/_build/linux-x86-64-release/ext:/opt/elastic - - ../php:/opt/elastic/php - - ./results:/results - - ./allowedToFailLists/:/allowedToFailLists - - ./baselineFailures/:/baselineFailures/ - - ./testsToRemove/:/testsToRemove/ - depends_on: - - elasticsearch - - apm-server - phpt_74: - build: - context: . - dockerfile: images/Dockerfile - args: - PHP_VERSION: 7.4 - networks: - - elastic-net - volumes: - - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini - - ../native/_build/linux-x86-64-release/ext:/opt/elastic - - ../php:/opt/elastic/php - - ./results:/results - - ./allowedToFailLists/:/allowedToFailLists - - ./baselineFailures/:/baselineFailures/ - - ./testsToRemove/:/testsToRemove/ - depends_on: - - elasticsearch - - apm-server - phpt_80: - build: - context: . - dockerfile: images/Dockerfile - args: - PHP_VERSION: 8.0 - networks: - - elastic-net - volumes: - - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini - - ../native/_build/linux-x86-64-release/ext:/opt/elastic - - ../php:/opt/elastic/php - - ./results:/results - - ./allowedToFailLists/:/allowedToFailLists - - ./baselineFailures/:/baselineFailures/ - - ./testsToRemove/:/testsToRemove/ - depends_on: - - elasticsearch - - apm-server - phpt_81: - build: - context: . - dockerfile: images/Dockerfile - args: - PHP_VERSION: 8.1 - networks: - - elastic-net - volumes: - - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini - - ../native/_build/linux-x86-64-release/ext:/opt/elastic - - ../php:/opt/elastic/php - - ./results:/results - - ./allowedToFailLists/:/allowedToFailLists - - ./baselineFailures/:/baselineFailures/ - - ./testsToRemove/:/testsToRemove/ - depends_on: - - elasticsearch - - apm-server - phpt_82: - build: - context: . - dockerfile: images/Dockerfile - args: - PHP_VERSION: 8.2 - networks: - - elastic-net - volumes: - - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini - - ../native/_build/linux-x86-64-release/ext:/opt/elastic - - ../php:/opt/elastic/php - - ./results:/results - - ./allowedToFailLists/:/allowedToFailLists - - ./baselineFailures/:/baselineFailures/ - - ./testsToRemove/:/testsToRemove/ - depends_on: - - elasticsearch - - apm-server + phpt_72: + build: + context: . + dockerfile: images/Dockerfile + args: + PHP_VERSION: 7.2 + networks: + - elastic-net + volumes: + - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini + - ../native/_build/linux-x86-64-release/ext:/opt/elastic + - ../php:/opt/elastic/php + - ./results:/results + - ./allowedToFailLists/:/allowedToFailLists + - ./baselineFailures/:/baselineFailures/ + - ./testsToRemove/:/testsToRemove/ + depends_on: + - elasticsearch + - apm-server + phpt_73: + build: + context: . + dockerfile: images/Dockerfile + args: + PHP_VERSION: 7.3 + networks: + - elastic-net + volumes: + - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini + - ../native/_build/linux-x86-64-release/ext:/opt/elastic + - ../php:/opt/elastic/php + - ./results:/results + - ./allowedToFailLists/:/allowedToFailLists + - ./baselineFailures/:/baselineFailures/ + - ./testsToRemove/:/testsToRemove/ + depends_on: + - elasticsearch + - apm-server + phpt_74: + build: + context: . + dockerfile: images/Dockerfile + args: + PHP_VERSION: 7.4 + networks: + - elastic-net + volumes: + - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini + - ../native/_build/linux-x86-64-release/ext:/opt/elastic + - ../php:/opt/elastic/php + - ./results:/results + - ./allowedToFailLists/:/allowedToFailLists + - ./baselineFailures/:/baselineFailures/ + - ./testsToRemove/:/testsToRemove/ + depends_on: + - elasticsearch + - apm-server + phpt_80: + build: + context: . + dockerfile: images/Dockerfile + args: + PHP_VERSION: 8.0 + networks: + - elastic-net + volumes: + - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini + - ../native/_build/linux-x86-64-release/ext:/opt/elastic + - ../php:/opt/elastic/php + - ./results:/results + - ./allowedToFailLists/:/allowedToFailLists + - ./baselineFailures/:/baselineFailures/ + - ./testsToRemove/:/testsToRemove/ + depends_on: + - elasticsearch + - apm-server + phpt_81: + build: + context: . + dockerfile: images/Dockerfile + args: + PHP_VERSION: 8.1 + networks: + - elastic-net + volumes: + - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini + - ../native/_build/linux-x86-64-release/ext:/opt/elastic + - ../php:/opt/elastic/php + - ./results:/results + - ./allowedToFailLists/:/allowedToFailLists + - ./baselineFailures/:/baselineFailures/ + - ./testsToRemove/:/testsToRemove/ + depends_on: + - elasticsearch + - apm-server + phpt_82: + build: + context: . + dockerfile: images/Dockerfile + args: + PHP_VERSION: 8.2 + networks: + - elastic-net + volumes: + - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini + - ../native/_build/linux-x86-64-release/ext:/opt/elastic + - ../php:/opt/elastic/php + - ./results:/results + - ./allowedToFailLists/:/allowedToFailLists + - ./baselineFailures/:/baselineFailures/ + - ./testsToRemove/:/testsToRemove/ + depends_on: + - elasticsearch + - apm-server + phpt_83: + build: + context: . + dockerfile: images/Dockerfile + args: + PHP_VERSION: 8.3 + networks: + - elastic-net + volumes: + - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini + - ../native/_build/linux-x86-64-release/ext:/opt/elastic + - ../php:/opt/elastic/php + - ./results:/results + - ./allowedToFailLists/:/allowedToFailLists + - ./baselineFailures/:/baselineFailures/ + - ./testsToRemove/:/testsToRemove/ + depends_on: + - elasticsearch + - apm-server + phpt_84: + build: + context: . + dockerfile: images/Dockerfile + args: + PHP_VERSION: 8.4 + networks: + - elastic-net + volumes: + - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini + - ../native/_build/linux-x86-64-release/ext:/opt/elastic + - ../php:/opt/elastic/php + - ./results:/results + - ./allowedToFailLists/:/allowedToFailLists + - ./baselineFailures/:/baselineFailures/ + - ./testsToRemove/:/testsToRemove/ + depends_on: + - elasticsearch + - apm-server + phpt_85: + build: + context: . + dockerfile: images/Dockerfile + args: + PHP_VERSION: 8.5 + networks: + - elastic-net + volumes: + - ./config/99-elastic.ini:/usr/local/etc/php/conf.d/99-elastic.ini + - ../native/_build/linux-x86-64-release/ext:/opt/elastic + - ../php:/opt/elastic/php + - ./results:/results + - ./allowedToFailLists/:/allowedToFailLists + - ./baselineFailures/:/baselineFailures/ + - ./testsToRemove/:/testsToRemove/ + depends_on: + - elasticsearch + - apm-server - - apm-server: - image: docker.elastic.co/apm/apm-server:7.14.0 - container_name: apm-server - networks: - - elastic-net - environment: - - output.elasticsearch.hosts=["elasticsearch:9200"] - logging: - driver: none - elasticsearch: - image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 - container_name: elasticsearch - environment: - - discovery.type=single-node - - ELASTICSEARCH_USERNAME=elastic - - ELASTICSEARCH_PASSWORD=elastic - networks: - - elastic-net - logging: - driver: none + apm-server: + image: docker.elastic.co/apm/apm-server:7.14.0 + container_name: apm-server + networks: + - elastic-net + environment: + - output.elasticsearch.hosts=["elasticsearch:9200"] + logging: + driver: none + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:7.14.0 + container_name: elasticsearch + environment: + - discovery.type=single-node + - ELASTICSEARCH_USERNAME=elastic + - ELASTICSEARCH_PASSWORD=elastic + networks: + - elastic-net + logging: + driver: none networks: elastic-net: diff --git a/agent/extension_phpt_test/images/Dockerfile b/agent/extension_phpt_test/images/Dockerfile index 7c10a5135..ea2382066 100644 --- a/agent/extension_phpt_test/images/Dockerfile +++ b/agent/extension_phpt_test/images/Dockerfile @@ -5,7 +5,12 @@ RUN apt-get update && apt-get install -y libcurl4 libcurl4-openssl-dev gdb RUN docker-php-source extract -RUN docker-php-ext-install pdo pdo_mysql opcache curl +RUN MODULES="pdo pdo_mysql curl"; \ + case "${PHP_VERSION}" in \ + 8.5*) ;; \ + *) MODULES="$MODULES opcache" ;; \ + esac; \ + docker-php-ext-install $MODULES RUN php -m diff --git a/agent/extension_phpt_test/scripts/run.sh b/agent/extension_phpt_test/scripts/run.sh index 7f5c4112a..142cad283 100755 --- a/agent/extension_phpt_test/scripts/run.sh +++ b/agent/extension_phpt_test/scripts/run.sh @@ -21,6 +21,12 @@ elif [ $PHP_VERSION == "8.1" ]; then PHP_API_VERSION="20210902" elif [ $PHP_VERSION == "8.2" ]; then PHP_API_VERSION="20220829" +elif [ $PHP_VERSION == "8.3" ]; then + PHP_API_VERSION="20230831" +elif [ $PHP_VERSION == "8.4" ]; then + PHP_API_VERSION="20240924" +elif [ $PHP_VERSION == "8.5" ]; then + PHP_API_VERSION="20250925" fi mkdir -m 666 -p /results/${PHP_VERSION} From 0d7f30c8104e41c72c58f2b03a73c7ced6992174 Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Mon, 26 Jan 2026 09:31:58 +0100 Subject: [PATCH 10/12] github-action: add artifact-metadata permission for attestations (#1410) --- .github/workflows/release.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6c586aa5f..0b925fb77 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,9 +47,10 @@ jobs: env: BUCKET_NAME: "apm-agent-php" permissions: + artifact-metadata: write attestations: write - id-token: write contents: write + id-token: write steps: - uses: actions/checkout@v6 From 9b06826a3fedf3e665415f6c280bc3145a898af9 Mon Sep 17 00:00:00 2001 From: Sebastian Detert Date: Thu, 19 Feb 2026 21:30:52 +0100 Subject: [PATCH 11/12] Update runSelectPhpUnitConfigFile.php --- tests/ElasticApmTests/Util/runSelectPhpUnitConfigFile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ElasticApmTests/Util/runSelectPhpUnitConfigFile.php b/tests/ElasticApmTests/Util/runSelectPhpUnitConfigFile.php index 0ae773b42..a477b5705 100644 --- a/tests/ElasticApmTests/Util/runSelectPhpUnitConfigFile.php +++ b/tests/ElasticApmTests/Util/runSelectPhpUnitConfigFile.php @@ -25,5 +25,5 @@ use ElasticApmTests\Util\SelectPhpUnitConfigFile; -$phpUnitConfigFileName = SelectPhpUnitConfigFile::run($argv); +$phpUnitConfigFileName = SelectPhpUnitConfigFile::run($_SERVER['argv']); echo $phpUnitConfigFileName; From e44fa14205ead75f9ef7dc654557e75ddd9ffe35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Feb 2026 09:09:00 +0100 Subject: [PATCH 12/12] build(deps): bump the github-actions group across 1 directory with 2 updates (#1414) Squash merge PR #1414: build(deps): bump the github-actions group across 1 directory with 2 updates --- .github/workflows/build-packages.yml | 2 +- .github/workflows/cache.yml | 6 +++--- .github/workflows/test-packages.yml | 2 +- .github/workflows/updatecli.yml | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-packages.yml b/.github/workflows/build-packages.yml index 18768c6e4..7d3531bd6 100644 --- a/.github/workflows/build-packages.yml +++ b/.github/workflows/build-packages.yml @@ -30,7 +30,7 @@ jobs: name: package-parts-linuxmusl-${{ matrix.BUILD_ARCH }} path: agent/native/_build/linuxmusl-${{ matrix.BUILD_ARCH }}-release/ - name: Log in to the Container registry - uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/cache.yml b/.github/workflows/cache.yml index 8a65beba2..7014bc5ee 100644 --- a/.github/workflows/cache.yml +++ b/.github/workflows/cache.yml @@ -50,7 +50,7 @@ jobs: type=raw,value=${{ env.TEST_TAG }} - name: Build and export Container image - uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: context: ./packaging/cache/ load: true @@ -72,14 +72,14 @@ jobs: type=raw,value=latest - name: Log in to the Container registry - uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push Docker image - uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0 + uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2 with: context: ./packaging/cache/ push: true diff --git a/.github/workflows/test-packages.yml b/.github/workflows/test-packages.yml index 3b2217e04..4a8f4e4d6 100644 --- a/.github/workflows/test-packages.yml +++ b/.github/workflows/test-packages.yml @@ -56,7 +56,7 @@ jobs: path: ${{ env.BUILD_PACKAGES }} - name: Log in to the Container registry - uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 + uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 with: registry: ghcr.io username: ${{ github.actor }} diff --git a/.github/workflows/updatecli.yml b/.github/workflows/updatecli.yml index 72383c8ab..9d7a5d56a 100644 --- a/.github/workflows/updatecli.yml +++ b/.github/workflows/updatecli.yml @@ -29,7 +29,7 @@ jobs: "pull_requests": "write" } - - uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0 + - uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0 with: registry: ghcr.io username: ${{ github.actor }}