From 2ce1e4a3afb5bb5ea23fef11239560d8441ed514 Mon Sep 17 00:00:00 2001 From: "Michael A. Smith" Date: Thu, 4 Jun 2026 15:15:16 -0400 Subject: [PATCH] ci: run InstallerAuto.php as apache, not root openemr/openemr#12267 added RootCliGuard, which aborts the CI installer when it runs as root (UID 0). The Install step in test-actions-core is shared across all slots (7.0.4, 8.0.0, 8.1.0, 8.1.1, binary, flex), so add --user apache rather than su-exec (which #743 only added to flex/8.1.1/binary). apache owns the baked source in every slot, so it can write sqlconf.php and generated keys. phpunit steps are unaffected: interface/globals.php skips the guard under PHPUNIT_COMPOSER_INSTALL. Assisted-by: Claude Code --- .github/actions/test-actions-core/action.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/actions/test-actions-core/action.yml b/.github/actions/test-actions-core/action.yml index fabc49aa..11a84e46 100644 --- a/.github/actions/test-actions-core/action.yml +++ b/.github/actions/test-actions-core/action.yml @@ -76,7 +76,13 @@ runs: - name: Install run: | + # Run as apache, not root: openemr/openemr#12267 added RootCliGuard, + # which aborts the installer when it runs as root (UID 0). apache owns + # the baked source in every slot's Dockerfile, so it can write sqlconf.php + # and generated keys. --user is portable across all slots (unlike su-exec, + # which #743 only added to flex/8.1.1/binary). docker compose exec \ + --user apache \ --env OPENEMR_ENABLE_INSTALLER_AUTO=1 \ --workdir /var/www/localhost/htdocs/openemr/contrib/util/installScripts \ "${OPENEMR_SERVICE_NAME}" sh -c 'sed -e "s@^exit;@ @" InstallerAuto.php |