fix: opcache_preload in PHP 8.2 (#2284)

Fixes the Docker image tests currently failing in CI.
This commit is contained in:
Alexander Stecher
2026-03-17 05:14:45 +01:00
committed by GitHub
parent 097563d262
commit 9cfa7b3f65
2 changed files with 12 additions and 8 deletions

View File

@@ -1227,7 +1227,7 @@ int frankenphp_execute_script(char *file_name) {
zend_destroy_file_handle(&file_handle);
/* Reset the sandboxed environment */
/* Reset the sandboxed environment if it is in use */
if (sandboxed_env != NULL) {
zend_hash_release(sandboxed_env);
sandboxed_env = NULL;

View File

@@ -141,8 +141,8 @@ func TestMain(m *testing.M) {
slog.SetDefault(slog.New(slog.DiscardHandler))
}
// setup custom environment var for TestWorkerHasOSEnvironmentVariableInSERVER
if os.Setenv("CUSTOM_OS_ENV_VARIABLE", "custom_env_variable_value") != nil {
// setup custom environment var for TestWorkerHasOSEnvironmentVariableInSERVER and TestPhpIni
if os.Setenv("CUSTOM_OS_ENV_VARIABLE", "custom_env_variable_value") != nil || os.Setenv("LITERAL_ZERO", "0") != nil {
fmt.Println("Failed to set environment variable for tests")
os.Exit(1)
}
@@ -162,14 +162,12 @@ func testHelloWorld(t *testing.T, opts *testOptions) {
}
func TestEnvVarsInPhpIni(t *testing.T) {
t.Setenv("OPCACHE_ENABLE", "0")
runTest(t, func(handler func(http.ResponseWriter, *http.Request), _ *httptest.Server, _ int) {
body, _ := testGet("http://example.com/ini.php?key=opcache.enable", handler, t)
assert.Equal(t, "opcache.enable:0", body)
}, &testOptions{
phpIni: map[string]string{
"opcache.enable": "${OPCACHE_ENABLE}",
"opcache.enable": "${LITERAL_ZERO}",
},
})
}
@@ -1305,20 +1303,26 @@ func TestSessionNoLeakAfterExit_worker(t *testing.T) {
}
func TestOpcachePreload_module(t *testing.T) {
testOpcachePreload(t, &testOptions{env: map[string]string{"TEST": "123"}})
testOpcachePreload(t, &testOptions{env: map[string]string{"TEST": "123"}, realServer: true})
}
func TestOpcachePreload_worker(t *testing.T) {
testOpcachePreload(t, &testOptions{workerScript: "preload-check.php", nbWorkers: 1, nbParallelRequests: 1, env: map[string]string{"TEST": "123"}})
testOpcachePreload(t, &testOptions{workerScript: "preload-check.php", env: map[string]string{"TEST": "123"}, realServer: true})
}
func testOpcachePreload(t *testing.T, opts *testOptions) {
if frankenphp.Version().VersionID <= 80300 {
t.Skip("This test is only supported in PHP 8.3 and above")
return
}
cwd, _ := os.Getwd()
preloadScript := cwd + "/testdata/preload.php"
u, err := user.Current()
require.NoError(t, err)
// use opcache.log_verbosity_level:4 for debugging
opts.phpIni = map[string]string{
"opcache.enable": "1",
"opcache.preload": preloadScript,