--- /dev/null
+--TEST--
+Bug #41518 (file_exists() warns of open_basedir restriction on non-existent file)
+--SKIPIF--
+<?php
+/* let's use /tmp here */
+$tmp_dir = "/tmp";
+if (!is_dir($tmp_dir) || realpath($tmp_dir) !== $tmp_dir) {
+ die("skip");
+}
+?>
+--INI--
+open_basedir=/tmp/
+--FILE--
+<?php
+
+$tmp_dir = "/tmp";
+$tmp_file = $tmp_dir."/bug41418.tmp";
+
+touch($tmp_file);
+var_dump(file_exists($tmp_file)); //exists
+var_dump(file_exists($tmp_file."nosuchfile")); //doesn't exist
+
+echo "Done\n";
+?>
+--EXPECTF--
+bool(true)
+bool(false)
+Done
}
}
+ resolved_name_len = strlen(resolved_name);
if (path_tmp[path_len - 1] == PHP_DIR_SEPARATOR) {
- resolved_name_len = strlen(resolved_name);
if (resolved_name[resolved_name_len - 1] != PHP_DIR_SEPARATOR) {
resolved_name[resolved_name_len] = PHP_DIR_SEPARATOR;
resolved_name[++resolved_name_len] = '\0';
/* File is in the right directory */
return 0;
} else {
+ /* /openbasedir/ and /openbasedir are the same directory */
+ if (resolved_basedir_len == (resolved_name_len + 1) && resolved_basedir[resolved_basedir_len - 1] == PHP_DIR_SEPARATOR) {
+#if defined(PHP_WIN32) || defined(NETWARE)
+ if (strncasecmp(resolved_basedir, resolved_name, resolved_name_len) == 0) {
+#else
+ if (strncmp(resolved_basedir, resolved_name, resolved_name_len) == 0) {
+#endif
+ return 0;
+ }
+ }
return -1;
}
} else {