Skip to content

Commit 22e9f9f

Browse files
committed
Also propagate include exceptions in opcache
1 parent 003be87 commit 22e9f9f

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

ext/opcache/ZendAccelerator.c

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1677,11 +1677,13 @@ static zend_persistent_script *opcache_compile_file(zend_file_handle *file_handl
16771677
if (file_handle->type == ZEND_HANDLE_FILENAME) {
16781678
if (accelerator_orig_zend_stream_open_function(file_handle->filename, file_handle) != SUCCESS) {
16791679
*op_array_p = NULL;
1680-
if (type == ZEND_REQUIRE) {
1681-
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
1682-
zend_bailout();
1683-
} else {
1684-
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
1680+
if (!EG(exception)) {
1681+
if (type == ZEND_REQUIRE) {
1682+
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
1683+
zend_bailout();
1684+
} else {
1685+
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
1686+
}
16851687
}
16861688
return NULL;
16871689
}
@@ -1825,11 +1827,13 @@ zend_op_array *file_cache_compile_file(zend_file_handle *file_handle, int type)
18251827
if (!file_handle->opened_path) {
18261828
if (file_handle->type == ZEND_HANDLE_FILENAME &&
18271829
accelerator_orig_zend_stream_open_function(file_handle->filename, file_handle) == FAILURE) {
1828-
if (type == ZEND_REQUIRE) {
1829-
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
1830-
zend_bailout();
1831-
} else {
1832-
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
1830+
if (!EG(exception)) {
1831+
if (type == ZEND_REQUIRE) {
1832+
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
1833+
zend_bailout();
1834+
} else {
1835+
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
1836+
}
18331837
}
18341838
return NULL;
18351839
}
@@ -1979,11 +1983,13 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type)
19791983
/* open file to resolve the path */
19801984
if (file_handle->type == ZEND_HANDLE_FILENAME &&
19811985
accelerator_orig_zend_stream_open_function(file_handle->filename, file_handle) == FAILURE) {
1982-
if (type == ZEND_REQUIRE) {
1983-
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
1984-
zend_bailout();
1985-
} else {
1986-
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
1986+
if (!EG(exception)) {
1987+
if (type == ZEND_REQUIRE) {
1988+
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
1989+
zend_bailout();
1990+
} else {
1991+
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
1992+
}
19871993
}
19881994
return NULL;
19891995
}
@@ -2035,11 +2041,13 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type)
20352041
UNEXPECTED(ZCG(accel_directives).validate_permission) &&
20362042
file_handle->type == ZEND_HANDLE_FILENAME &&
20372043
UNEXPECTED(check_persistent_script_access(persistent_script))) {
2038-
if (type == ZEND_REQUIRE) {
2039-
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
2040-
zend_bailout();
2041-
} else {
2042-
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
2044+
if (!EG(exception)) {
2045+
if (type == ZEND_REQUIRE) {
2046+
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
2047+
zend_bailout();
2048+
} else {
2049+
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
2050+
}
20432051
}
20442052
return NULL;
20452053
}

0 commit comments

Comments
 (0)