From: Anatol Belski Date: Thu, 21 Apr 2016 19:17:33 +0000 (+0200) Subject: Fixed bug #72035 php-cgi.exe fails to run scripts relative to drive root X-Git-Tag: php-7.0.7RC1~78 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e0edb25cf2decd41f897100ebd4330c8f9b8a15e;p=php Fixed bug #72035 php-cgi.exe fails to run scripts relative to drive root --- diff --git a/ext/standard/tests/file/bug72035.phpt b/ext/standard/tests/file/bug72035.phpt new file mode 100644 index 0000000000..a2abbb7f35 --- /dev/null +++ b/ext/standard/tests/file/bug72035.phpt @@ -0,0 +1,40 @@ +--TEST-- +Bug #72035 php-cgi.exe fails to run scripts relative to drive root +--SKIPIF-- + +--FILE-- +"); + +$cmd = "$cgi -n -C $fl"; + +/* Need to run CGI with the env reset. */ +$desc = array(0 => array("pipe", "r")); +$proc = proc_open($cmd, $desc, $pipes, getcwd(), array()); +if (is_resource($proc)) { + echo stream_get_contents($pipes[0]); + + proc_close($proc); +} + +unlink($fl); +?> +==DONE== +--EXPECTF-- +X-Powered-By: PHP/%s +Content-type: text/html; charset=UTF-8 + +hello +==DONE== diff --git a/main/fopen_wrappers.c b/main/fopen_wrappers.c index e4d5688de3..ab51e5e58b 100644 --- a/main/fopen_wrappers.c +++ b/main/fopen_wrappers.c @@ -505,6 +505,13 @@ PHPAPI zend_string *php_resolve_path(const char *filename, int filename_length, (IS_SLASH(filename[1]) || ((filename[1] == '.') && IS_SLASH(filename[2])))) || IS_ABSOLUTE_PATH(filename, filename_length) || +#if PHP_WIN32 + /* This should count as an absolute local path as well, however + IS_ABSOLUTE_PATH doesn't care about this path form till now. It + might be a big thing to extend, thus just a local handling for + now. */ + filename_length >=2 && IS_SLASH(filename[0]) && !IS_SLASH(filename[1]) || +#endif !path || !*path) { if (tsrm_realpath(filename, resolved_path)) {