Also propagate include exceptions in opcache

This commit is contained in:
Nikita Popov 2019-12-30 23:21:32 +01:00
parent 003be875e4
commit 22e9f9fe4d

View file

@ -1677,12 +1677,14 @@ static zend_persistent_script *opcache_compile_file(zend_file_handle *file_handl
if (file_handle->type == ZEND_HANDLE_FILENAME) { if (file_handle->type == ZEND_HANDLE_FILENAME) {
if (accelerator_orig_zend_stream_open_function(file_handle->filename, file_handle) != SUCCESS) { if (accelerator_orig_zend_stream_open_function(file_handle->filename, file_handle) != SUCCESS) {
*op_array_p = NULL; *op_array_p = NULL;
if (!EG(exception)) {
if (type == ZEND_REQUIRE) { if (type == ZEND_REQUIRE) {
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename); zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
zend_bailout(); zend_bailout();
} else { } else {
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename); zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
} }
}
return NULL; return NULL;
} }
} }
@ -1825,12 +1827,14 @@ zend_op_array *file_cache_compile_file(zend_file_handle *file_handle, int type)
if (!file_handle->opened_path) { if (!file_handle->opened_path) {
if (file_handle->type == ZEND_HANDLE_FILENAME && if (file_handle->type == ZEND_HANDLE_FILENAME &&
accelerator_orig_zend_stream_open_function(file_handle->filename, file_handle) == FAILURE) { accelerator_orig_zend_stream_open_function(file_handle->filename, file_handle) == FAILURE) {
if (!EG(exception)) {
if (type == ZEND_REQUIRE) { if (type == ZEND_REQUIRE) {
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename); zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
zend_bailout(); zend_bailout();
} else { } else {
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename); zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
} }
}
return NULL; return NULL;
} }
} }
@ -1979,12 +1983,14 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type)
/* open file to resolve the path */ /* open file to resolve the path */
if (file_handle->type == ZEND_HANDLE_FILENAME && if (file_handle->type == ZEND_HANDLE_FILENAME &&
accelerator_orig_zend_stream_open_function(file_handle->filename, file_handle) == FAILURE) { accelerator_orig_zend_stream_open_function(file_handle->filename, file_handle) == FAILURE) {
if (!EG(exception)) {
if (type == ZEND_REQUIRE) { if (type == ZEND_REQUIRE) {
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename); zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
zend_bailout(); zend_bailout();
} else { } else {
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename); zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
} }
}
return NULL; return NULL;
} }
@ -2035,12 +2041,14 @@ zend_op_array *persistent_compile_file(zend_file_handle *file_handle, int type)
UNEXPECTED(ZCG(accel_directives).validate_permission) && UNEXPECTED(ZCG(accel_directives).validate_permission) &&
file_handle->type == ZEND_HANDLE_FILENAME && file_handle->type == ZEND_HANDLE_FILENAME &&
UNEXPECTED(check_persistent_script_access(persistent_script))) { UNEXPECTED(check_persistent_script_access(persistent_script))) {
if (!EG(exception)) {
if (type == ZEND_REQUIRE) { if (type == ZEND_REQUIRE) {
zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename); zend_message_dispatcher(ZMSG_FAILED_REQUIRE_FOPEN, file_handle->filename);
zend_bailout(); zend_bailout();
} else { } else {
zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename); zend_message_dispatcher(ZMSG_FAILED_INCLUDE_FOPEN, file_handle->filename);
} }
}
return NULL; return NULL;
} }