summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--ext/ffi/tests/300-win32.phpt24
-rw-r--r--ext/ffi/tests/bug78761.phpt5
-rw-r--r--ext/opcache/ZendAccelerator.c69
-rw-r--r--ext/opcache/tests/bug78014.phpt5
-rw-r--r--ext/opcache/tests/bug78175.phpt5
-rw-r--r--ext/opcache/tests/bug78175_2.phpt5
-rw-r--r--ext/opcache/tests/bug78376.phpt7
-rw-r--r--ext/opcache/tests/bug78937_1.phpt5
-rw-r--r--ext/opcache/tests/bug78937_2.phpt7
-rw-r--r--ext/opcache/tests/bug78937_3.phpt5
-rw-r--r--ext/opcache/tests/bug78937_4.phpt7
-rw-r--r--ext/opcache/tests/bug78937_5.phpt7
-rw-r--r--ext/opcache/tests/bug78937_6.phpt5
-rw-r--r--ext/opcache/tests/preload_001.phpt5
-rw-r--r--ext/opcache/tests/preload_002.phpt5
-rw-r--r--ext/opcache/tests/preload_003.phpt5
-rw-r--r--ext/opcache/tests/preload_004.phpt5
-rw-r--r--ext/opcache/tests/preload_005.phpt5
-rw-r--r--ext/opcache/tests/preload_006.phpt1
-rw-r--r--ext/opcache/tests/preload_007.phpt5
-rw-r--r--ext/opcache/tests/preload_008.phpt5
-rw-r--r--ext/opcache/tests/preload_009.phpt5
-rw-r--r--ext/opcache/tests/preload_010.phpt5
-rw-r--r--ext/opcache/tests/preload_011.phpt5
-rw-r--r--ext/opcache/tests/preload_012.phpt5
-rw-r--r--ext/opcache/tests/preload_013.phpt5
-rw-r--r--ext/opcache/tests/preload_class_alias.phpt5
-rw-r--r--ext/opcache/tests/preload_class_alias_2.phpt5
-rw-r--r--ext/opcache/tests/preload_loadable_classes_1.phpt5
-rw-r--r--ext/opcache/tests/preload_loadable_classes_2.phpt5
-rw-r--r--ext/opcache/tests/preload_loadable_classes_3.phpt5
-rw-r--r--ext/opcache/tests/preload_loadable_classes_4.inc3
-rw-r--r--ext/opcache/tests/preload_loadable_classes_4.phpt16
-rw-r--r--ext/opcache/tests/preload_trait_static.phpt5
-rw-r--r--ext/opcache/tests/preload_unresolved_prop_type.phpt5
-rw-r--r--ext/opcache/tests/preload_windows.phpt16
37 files changed, 147 insertions, 141 deletions
diff --git a/NEWS b/NEWS
index 9a28926ff6..fc7cf905d4 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@ PHP NEWS
?? ??? ????, PHP 7.4.2
- Core:
+ . Preloading support on Windows has been disabled. (Nikita)
. Fixed bug #79022 (class_exists returns True for classes that are not ready
to be used). (Laruence)
. Fixed bug #78929 (plus signs in cookie values are converted to spaces).
diff --git a/ext/ffi/tests/300-win32.phpt b/ext/ffi/tests/300-win32.phpt
deleted file mode 100644
index 9fd9fac4c4..0000000000
--- a/ext/ffi/tests/300-win32.phpt
+++ /dev/null
@@ -1,24 +0,0 @@
---TEST--
-FFI 300: FFI preloading on Windows
---SKIPIF--
-<?php require_once('skipif.inc'); ?>
-<?php if (!extension_loaded('Zend OPcache')) die('skip Zend OPcache extension not available'); ?>
-<?php if (substr(PHP_OS, 0, 3) != 'WIN') die('skip for Windows only'); ?>
---INI--
-ffi.enable=1
-opcache.enable=1
-opcache.enable_cli=1
-opcache.optimization_level=-1
-opcache.preload={PWD}/preload.inc
---FILE--
-<?php
-$ffi = FFI::scope("TEST_300_WIN32");
-$ffi->php_printf("Hello World from %s!\n", "PHP");
-?>
---CLEAN--
-<?php
- $fn = __DIR__ . "/300-win32.h";
- unlink($fn);
-?>
---EXPECT--
-Hello World from PHP!
diff --git a/ext/ffi/tests/bug78761.phpt b/ext/ffi/tests/bug78761.phpt
index 1db977a841..0e6ae1b3b8 100644
--- a/ext/ffi/tests/bug78761.phpt
+++ b/ext/ffi/tests/bug78761.phpt
@@ -1,7 +1,10 @@
--TEST--
Bug #78761 (Zend memory heap corruption with preload and casting)
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--INI--
opcache.enable_cli=1
opcache.preload={PWD}/bug78761_preload.php
diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c
index 1cb21cd130..e19980ab05 100644
--- a/ext/opcache/ZendAccelerator.c
+++ b/ext/opcache/ZendAccelerator.c
@@ -3397,13 +3397,6 @@ static void get_unlinked_dependency(zend_class_entry *ce, const char **kind, con
*name = ZSTR_VAL(ce->parent_name);
return;
}
-#ifdef ZEND_WIN32
- if (p->type == ZEND_INTERNAL_CLASS) {
- *kind = "Windows can't link to internal parent ";
- *name = ZSTR_VAL(ce->parent_name);
- return;
- }
-#endif
if (!(p->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
*kind = "Parent with unresolved initializers ";
*name = ZSTR_VAL(ce->parent_name);
@@ -3523,13 +3516,6 @@ static zend_bool preload_try_resolve_property_types(zend_class_entry *ce)
continue;
}
if (p != ce) {
-#ifdef ZEND_WIN32
- /* On Windows we can't link with internal class, because of ASLR */
- if (p->type == ZEND_INTERNAL_CLASS) {
- ok = 0;
- continue;
- }
-#endif
if (!(p->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
ok = 0;
continue;
@@ -3666,10 +3652,6 @@ static void preload_link(void)
parent = zend_hash_find_ptr(EG(class_table), key);
zend_string_release(key);
if (!parent) continue;
-#ifdef ZEND_WIN32
- /* On Windows we can't link with internal class, because of ASLR */
- if (parent->type == ZEND_INTERNAL_CLASS) continue;
-#endif
if (!(parent->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
continue;
}
@@ -3686,13 +3668,6 @@ static void preload_link(void)
found = 0;
break;
}
-#ifdef ZEND_WIN32
- /* On Windows we can't link with internal class, because of ASLR */
- if (p->type == ZEND_INTERNAL_CLASS) {
- found = 0;
- break;
- }
-#endif
if (!(p->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
found = 0;
break;
@@ -3709,13 +3684,6 @@ static void preload_link(void)
found = 0;
break;
}
-#ifdef ZEND_WIN32
- /* On Windows we can't link with internal class, because of ASLR */
- if (p->type == ZEND_INTERNAL_CLASS) {
- found = 0;
- break;
- }
-#endif
}
if (!found) continue;
}
@@ -3859,26 +3827,6 @@ static void preload_link(void)
} ZEND_HASH_FOREACH_END();
}
-#ifdef ZEND_WIN32
-static void preload_check_windows_restriction(zend_class_entry *scope, zend_class_entry *ce) {
- if (ce && ce->type == ZEND_INTERNAL_CLASS) {
- zend_error_noreturn(E_ERROR,
- "Class %s uses internal class %s during preloading, which is not supported on Windows",
- ZSTR_VAL(scope->name), ZSTR_VAL(ce->name));
- }
-}
-
-static void preload_check_windows_restrictions(zend_class_entry *scope) {
- uint32_t i;
-
- preload_check_windows_restriction(scope, scope->parent);
-
- for (i = 0; i < scope->num_interfaces; i++) {
- preload_check_windows_restriction(scope, scope->interfaces[i]);
- }
-}
-#endif
-
static inline int preload_update_class_constants(zend_class_entry *ce) {
/* This is a separate function to work around what appears to be a bug in GCC
* maybe-uninitialized analysis. */
@@ -3931,10 +3879,6 @@ static void preload_ensure_classes_loadable() {
continue;
}
-#ifdef ZEND_WIN32
- preload_check_windows_restrictions(ce);
-#endif
-
if (!(ce->ce_flags & ZEND_ACC_CONSTANTS_UPDATED)) {
if (preload_update_class_constants(ce) == FAILURE) {
zend_error_noreturn(E_ERROR,
@@ -4601,9 +4545,11 @@ static int accel_finish_startup(void)
}
if (ZCG(accel_directives).preload && *ZCG(accel_directives).preload) {
-#ifndef ZEND_WIN32
+#ifdef ZEND_WIN32
+ zend_accel_error(ACCEL_LOG_ERROR, "Preloading is not supported on Windows");
+ return FAILURE;
+#else
int in_child = 0;
-#endif
int ret = SUCCESS;
int rc;
int orig_error_reporting;
@@ -4637,7 +4583,6 @@ static int accel_finish_startup(void)
return SUCCESS;
}
-#ifndef ZEND_WIN32
if (geteuid() == 0) {
pid_t pid;
struct passwd *pw;
@@ -4701,7 +4646,6 @@ static int accel_finish_startup(void)
zend_accel_error(ACCEL_LOG_WARNING, "\"opcache.preload_user\" is ignored");
}
}
-#endif
sapi_module.activate = NULL;
sapi_module.deactivate = NULL;
@@ -4713,11 +4657,9 @@ static int accel_finish_startup(void)
sapi_module.ub_write = preload_ub_write;
sapi_module.flush = preload_flush;
-#ifndef ZEND_WIN32
if (in_child) {
CG(compiler_options) |= ZEND_COMPILE_PRELOAD_IN_CHILD;
}
-#endif
CG(compiler_options) |= ZEND_COMPILE_PRELOAD;
CG(compiler_options) |= ZEND_COMPILE_HANDLE_OP_ARRAY;
CG(compiler_options) |= ZEND_COMPILE_IGNORE_INTERNAL_CLASSES;
@@ -4792,7 +4734,6 @@ static int accel_finish_startup(void)
sapi_activate();
-#ifndef ZEND_WIN32
if (in_child) {
if (ret == SUCCESS) {
exit(0);
@@ -4800,9 +4741,9 @@ static int accel_finish_startup(void)
exit(2);
}
}
-#endif
return ret;
+#endif
}
return SUCCESS;
diff --git a/ext/opcache/tests/bug78014.phpt b/ext/opcache/tests/bug78014.phpt
index 14f205e7b8..47ec05977c 100644
--- a/ext/opcache/tests/bug78014.phpt
+++ b/ext/opcache/tests/bug78014.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78014.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
class B extends A {
diff --git a/ext/opcache/tests/bug78175.phpt b/ext/opcache/tests/bug78175.phpt
index eb513e3f01..b477e04fe6 100644
--- a/ext/opcache/tests/bug78175.phpt
+++ b/ext/opcache/tests/bug78175.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78175.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
OK
--EXPECT--
diff --git a/ext/opcache/tests/bug78175_2.phpt b/ext/opcache/tests/bug78175_2.phpt
index 1d736f6e10..7b5ad850ae 100644
--- a/ext/opcache/tests/bug78175_2.phpt
+++ b/ext/opcache/tests/bug78175_2.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78175_2.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump(get_class(Loader::getLoader()));
diff --git a/ext/opcache/tests/bug78376.phpt b/ext/opcache/tests/bug78376.phpt
index efc69c927e..5a8ed8b15a 100644
--- a/ext/opcache/tests/bug78376.phpt
+++ b/ext/opcache/tests/bug78376.phpt
@@ -6,10 +6,13 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78376.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump(\A::$a);
?>
--EXPECT--
-string(4) "aaaa" \ No newline at end of file
+string(4) "aaaa"
diff --git a/ext/opcache/tests/bug78937_1.phpt b/ext/opcache/tests/bug78937_1.phpt
index 1125ad4eb0..bc285f107b 100644
--- a/ext/opcache/tests/bug78937_1.phpt
+++ b/ext/opcache/tests/bug78937_1.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78937.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
class Bar {
diff --git a/ext/opcache/tests/bug78937_2.phpt b/ext/opcache/tests/bug78937_2.phpt
index 880063298b..a20c07d231 100644
--- a/ext/opcache/tests/bug78937_2.phpt
+++ b/ext/opcache/tests/bug78937_2.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78937.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
include(__DIR__ . "/preload_bug78937.inc");
@@ -19,4 +22,4 @@ Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78
Warning: Can't preload unlinked class class@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
object(class@anonymous)#%d (0) {
-} \ No newline at end of file
+}
diff --git a/ext/opcache/tests/bug78937_3.phpt b/ext/opcache/tests/bug78937_3.phpt
index 1c706e237d..16f7b80a40 100644
--- a/ext/opcache/tests/bug78937_3.phpt
+++ b/ext/opcache/tests/bug78937_3.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78937.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
include(__DIR__ . "/preload_bug78937.inc");
diff --git a/ext/opcache/tests/bug78937_4.phpt b/ext/opcache/tests/bug78937_4.phpt
index b555516d00..2ad86870de 100644
--- a/ext/opcache/tests/bug78937_4.phpt
+++ b/ext/opcache/tests/bug78937_4.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78937.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
class Bar {
@@ -19,4 +22,4 @@ Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78
Warning: Can't preload unlinked class class@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
-Fatal error: Class foo wasn't preloaded in %spreload_bug78937.inc on line 6 \ No newline at end of file
+Fatal error: Class foo wasn't preloaded in %spreload_bug78937.inc on line 6
diff --git a/ext/opcache/tests/bug78937_5.phpt b/ext/opcache/tests/bug78937_5.phpt
index f9f01a2a26..3502699750 100644
--- a/ext/opcache/tests/bug78937_5.phpt
+++ b/ext/opcache/tests/bug78937_5.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78937.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
include(__DIR__ . "/preload_bug78937.inc");
@@ -20,4 +23,4 @@ Warning: Can't preload unlinked class Foo: Unknown parent Bar in %spreload_bug78
Warning: Can't preload unlinked class class@anonymous: Unknown parent Bar in %spreload_bug78937.inc on line 3
object(Foo)#%d (0) {
-} \ No newline at end of file
+}
diff --git a/ext/opcache/tests/bug78937_6.phpt b/ext/opcache/tests/bug78937_6.phpt
index 28dcb0ce53..ec1cc2d277 100644
--- a/ext/opcache/tests/bug78937_6.phpt
+++ b/ext/opcache/tests/bug78937_6.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_bug78937.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
include(__DIR__ . "/preload_bug78937.inc");
diff --git a/ext/opcache/tests/preload_001.phpt b/ext/opcache/tests/preload_001.phpt
index 8b1fa1ff31..56ed196e99 100644
--- a/ext/opcache/tests/preload_001.phpt
+++ b/ext/opcache/tests/preload_001.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump(function_exists("f1"));
diff --git a/ext/opcache/tests/preload_002.phpt b/ext/opcache/tests/preload_002.phpt
index 18fe56d4ba..0115ff0564 100644
--- a/ext/opcache/tests/preload_002.phpt
+++ b/ext/opcache/tests/preload_002.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump((new ReflectionMethod('x', 'foo'))->getPrototype()->class);
diff --git a/ext/opcache/tests/preload_003.phpt b/ext/opcache/tests/preload_003.phpt
index b808387967..9ecec31aae 100644
--- a/ext/opcache/tests/preload_003.phpt
+++ b/ext/opcache/tests/preload_003.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
Y::foo();
diff --git a/ext/opcache/tests/preload_004.phpt b/ext/opcache/tests/preload_004.phpt
index 7242d071cb..be83c45369 100644
--- a/ext/opcache/tests/preload_004.phpt
+++ b/ext/opcache/tests/preload_004.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_undef_const.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump(class_exists('Foo'));
diff --git a/ext/opcache/tests/preload_005.phpt b/ext/opcache/tests/preload_005.phpt
index 1bcfae4d79..67e44610bc 100644
--- a/ext/opcache/tests/preload_005.phpt
+++ b/ext/opcache/tests/preload_005.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_globals.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
$x = 123;
diff --git a/ext/opcache/tests/preload_006.phpt b/ext/opcache/tests/preload_006.phpt
index b597d8eff8..76d9629774 100644
--- a/ext/opcache/tests/preload_006.phpt
+++ b/ext/opcache/tests/preload_006.phpt
@@ -8,6 +8,7 @@ opcache.preload={PWD}/preload_inheritance_error_ind.inc
--SKIPIF--
<?php
require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
if (getenv('SKIP_ASAN')) die('xfail Startup failure leak');
?>
--FILE--
diff --git a/ext/opcache/tests/preload_007.phpt b/ext/opcache/tests/preload_007.phpt
index 2054cd8740..79c2a6737a 100644
--- a/ext/opcache/tests/preload_007.phpt
+++ b/ext/opcache/tests/preload_007.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_include.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
echo "Foobar";
diff --git a/ext/opcache/tests/preload_008.phpt b/ext/opcache/tests/preload_008.phpt
index 2e630be9a0..8d7b42cab5 100644
--- a/ext/opcache/tests/preload_008.phpt
+++ b/ext/opcache/tests/preload_008.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump(get_anon());
diff --git a/ext/opcache/tests/preload_009.phpt b/ext/opcache/tests/preload_009.phpt
index 1adbf5b006..f3a28675e3 100644
--- a/ext/opcache/tests/preload_009.phpt
+++ b/ext/opcache/tests/preload_009.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_undef_const_2.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump(trait_exists('T'));
diff --git a/ext/opcache/tests/preload_010.phpt b/ext/opcache/tests/preload_010.phpt
index 80967f64a6..4e5121f23c 100644
--- a/ext/opcache/tests/preload_010.phpt
+++ b/ext/opcache/tests/preload_010.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_overwritten_prop_init.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump((new Bar)->prop);
diff --git a/ext/opcache/tests/preload_011.phpt b/ext/opcache/tests/preload_011.phpt
index 32863398a9..59be0493b4 100644
--- a/ext/opcache/tests/preload_011.phpt
+++ b/ext/opcache/tests/preload_011.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_variance_ind.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
interface K {}
diff --git a/ext/opcache/tests/preload_012.phpt b/ext/opcache/tests/preload_012.phpt
index 0883064ff4..bd3fd81bbd 100644
--- a/ext/opcache/tests/preload_012.phpt
+++ b/ext/opcache/tests/preload_012.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_const_autoload.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
===DONE===
--EXPECTF--
diff --git a/ext/opcache/tests/preload_013.phpt b/ext/opcache/tests/preload_013.phpt
index f6387c08e1..925a1fc5ef 100644
--- a/ext/opcache/tests/preload_013.phpt
+++ b/ext/opcache/tests/preload_013.phpt
@@ -7,7 +7,10 @@ opcache.optimization_level=-1
opcache.preload={PWD}/preload_nested_function.inc
opcache.interned_strings_buffer=0
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
test();
diff --git a/ext/opcache/tests/preload_class_alias.phpt b/ext/opcache/tests/preload_class_alias.phpt
index aee94426d0..3c615c409a 100644
--- a/ext/opcache/tests/preload_class_alias.phpt
+++ b/ext/opcache/tests/preload_class_alias.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_class_alias.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump(class_exists('A'));
diff --git a/ext/opcache/tests/preload_class_alias_2.phpt b/ext/opcache/tests/preload_class_alias_2.phpt
index 6dc2c21a8a..82167afa9b 100644
--- a/ext/opcache/tests/preload_class_alias_2.phpt
+++ b/ext/opcache/tests/preload_class_alias_2.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_class_alias_2.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump(class_exists('B'));
diff --git a/ext/opcache/tests/preload_loadable_classes_1.phpt b/ext/opcache/tests/preload_loadable_classes_1.phpt
index 8673814403..c89633343c 100644
--- a/ext/opcache/tests/preload_loadable_classes_1.phpt
+++ b/ext/opcache/tests/preload_loadable_classes_1.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_loadable_classes_1.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
var_dump(class_exists('Test'));
diff --git a/ext/opcache/tests/preload_loadable_classes_2.phpt b/ext/opcache/tests/preload_loadable_classes_2.phpt
index fc3fb1dc40..d561837bd0 100644
--- a/ext/opcache/tests/preload_loadable_classes_2.phpt
+++ b/ext/opcache/tests/preload_loadable_classes_2.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_loadable_classes_2.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
Unreachable
--EXPECTF--
diff --git a/ext/opcache/tests/preload_loadable_classes_3.phpt b/ext/opcache/tests/preload_loadable_classes_3.phpt
index a48692960a..78efb16804 100644
--- a/ext/opcache/tests/preload_loadable_classes_3.phpt
+++ b/ext/opcache/tests/preload_loadable_classes_3.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_loadable_classes_3.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
Unreachable
--EXPECTF--
diff --git a/ext/opcache/tests/preload_loadable_classes_4.inc b/ext/opcache/tests/preload_loadable_classes_4.inc
deleted file mode 100644
index 162de6eab2..0000000000
--- a/ext/opcache/tests/preload_loadable_classes_4.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-<?php
-
-class Test extends Exception {}
diff --git a/ext/opcache/tests/preload_loadable_classes_4.phpt b/ext/opcache/tests/preload_loadable_classes_4.phpt
deleted file mode 100644
index 07f0d094ce..0000000000
--- a/ext/opcache/tests/preload_loadable_classes_4.phpt
+++ /dev/null
@@ -1,16 +0,0 @@
---TEST--
-Preloading: Loadable class checking (4)
---INI--
-opcache.enable=1
-opcache.enable_cli=1
-opcache.optimization_level=-1
-opcache.preload={PWD}/preload_loadable_classes_4.inc
---SKIPIF--
-<?php
-require_once('skipif.inc');
-if (PHP_OS_FAMILY != 'Windows') die('skip Windows only');
-?>
---FILE--
-Unreachable
---EXPECTF--
-Fatal error: Class Test uses internal class Exception during preloading, which is not supported on Windows in Unknown on line 0
diff --git a/ext/opcache/tests/preload_trait_static.phpt b/ext/opcache/tests/preload_trait_static.phpt
index 55e3a2cd8a..c767ad6a9b 100644
--- a/ext/opcache/tests/preload_trait_static.phpt
+++ b/ext/opcache/tests/preload_trait_static.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_trait_static.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
<?php
$bar = new Bar;
diff --git a/ext/opcache/tests/preload_unresolved_prop_type.phpt b/ext/opcache/tests/preload_unresolved_prop_type.phpt
index 117f36692a..3e2accd19e 100644
--- a/ext/opcache/tests/preload_unresolved_prop_type.phpt
+++ b/ext/opcache/tests/preload_unresolved_prop_type.phpt
@@ -6,7 +6,10 @@ opcache.enable_cli=1
opcache.optimization_level=-1
opcache.preload={PWD}/preload_unresolved_prop_type.inc
--SKIPIF--
-<?php require_once('skipif.inc'); ?>
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY == 'Windows') die('skip Preloading is not supported on Windows');
+?>
--FILE--
===DONE===
--EXPECTF--
diff --git a/ext/opcache/tests/preload_windows.phpt b/ext/opcache/tests/preload_windows.phpt
new file mode 100644
index 0000000000..0414cfa0b5
--- /dev/null
+++ b/ext/opcache/tests/preload_windows.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Preloading is not supported on Windows
+--INI--
+opcache.enable=1
+opcache.enable_cli=1
+opcache.optimization_level=-1
+opcache.preload={PWD}/preload.inc
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+if (PHP_OS_FAMILY != 'Windows') die('skip Windows only test');
+?>
+--FILE--
+Unreachable
+--EXPECTF--
+%s: Error Preloading is not supported on Windows