diff options
Diffstat (limited to 'main/streams/streams.c')
-rw-r--r-- | main/streams/streams.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c index 96d3aeb41e..9bf7444412 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -2043,10 +2043,14 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod php_stream_wrapper *wrapper = NULL; const char *path_to_open; int persistent = options & STREAM_OPEN_PERSISTENT; + zend_string *path_str = NULL; zend_string *resolved_path = NULL; char *copy_of_path = NULL; if (opened_path) { + if (options & STREAM_OPEN_FOR_ZEND_STREAM) { + path_str = *opened_path; + } *opened_path = NULL; } @@ -2056,7 +2060,11 @@ PHPAPI php_stream *_php_stream_open_wrapper_ex(const char *path, const char *mod } if (options & USE_PATH) { - resolved_path = zend_resolve_path(path, strlen(path)); + if (path_str) { + resolved_path = zend_resolve_path(path_str); + } else { + resolved_path = php_resolve_path(path, strlen(path), PG(include_path)); + } if (resolved_path) { path = ZSTR_VAL(resolved_path); /* we've found this file, don't re-check include_path or run realpath */ |