summaryrefslogtreecommitdiff
path: root/main/streams/streams.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/streams/streams.c')
-rw-r--r--main/streams/streams.c10
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 */