summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/tests/require_once_warning_to_exception.phpt19
-rw-r--r--Zend/zend_execute.c2
2 files changed, 20 insertions, 1 deletions
diff --git a/Zend/tests/require_once_warning_to_exception.phpt b/Zend/tests/require_once_warning_to_exception.phpt
new file mode 100644
index 0000000000..d115ac68cc
--- /dev/null
+++ b/Zend/tests/require_once_warning_to_exception.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Promoting require_once warning to exception
+--FILE--
+<?php
+
+function exception_error_handler($errno, $errstr, $errfile, $errline ) {
+ throw new Exception($errstr);
+}
+set_error_handler("exception_error_handler");
+
+try {
+ $results = require_once 'does-not-exist.php';
+} catch (Exception $e) {
+ echo $e->getMessage(), "\n";
+};
+
+?>
+--EXPECT--
+require_once(does-not-exist.php): Failed to open stream: No such file or directory
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c
index ca1f88ba55..bc964c1ad1 100644
--- a/Zend/zend_execute.c
+++ b/Zend/zend_execute.c
@@ -4224,7 +4224,7 @@ static zend_never_inline zend_op_array* ZEND_FASTCALL zend_include_or_eval(zval
already_compiled:
new_op_array = ZEND_FAKE_OP_ARRAY;
}
- } else {
+ } else if (!EG(exception)) {
zend_message_dispatcher(
(type == ZEND_INCLUDE_ONCE) ?
ZMSG_FAILED_INCLUDE_FOPEN : ZMSG_FAILED_REQUIRE_FOPEN,