1--TEST--
2Test realpath() function: basic functionality
3--SKIPIF--
4<?php
5if (substr(PHP_OS, 0, 3) != 'WIN') {
6    die('skip only on Windows');
7}
8?>
9--FILE--
10<?php
11echo "\n*** Testing basic functions of realpath() with files ***\n";
12
13/* creating directories and files */
14$file_path = __DIR__;
15mkdir("$file_path/realpath_私はガラスを食べられますbasic/home/test/", 0777, true);
16
17$file_handle1 = fopen("$file_path/realpath_私はガラスを食べられますbasic/home/test/realpath_私はガラスを食べられますbasic.tmp", "w");
18$file_handle2 = fopen("$file_path/realpath_私はガラスを食べられますbasic/home/realpath_私はガラスを食べられますbasic.tmp", "w");
19$file_handle3 = fopen("$file_path/realpath_私はガラスを食べられますbasic/realpath_私はガラスを食べられますbasic.tmp", "w");
20fclose($file_handle1);
21fclose($file_handle2);
22fclose($file_handle3);
23
24echo "\n*** Testing realpath() on filenames ***\n";
25$filenames = array (
26  /* filenames resulting in valid paths */
27  "$file_path/realpath_私はガラスを食べられますbasic/home/realpath_私はガラスを食べられますbasic.tmp",
28  "$file_path/realpath_私はガラスを食べられますbasic/realpath_私はガラスを食べられますbasic.tmp/",
29  "$file_path/realpath_私はガラスを食べられますbasic//home/test//../test/./realpath_私はガラスを食べられますbasic.tmp",
30  "$file_path/realpath_私はガラスを食べられますbasic/home//../././realpath_私はガラスを食べられますbasic.tmp//",
31
32   // checking for binary safe
33  "$file_path/realpath_私はガラスを食べられますbasic/home/realpath_私はガラスを食べられますbasic.tmp",
34
35  /* filenames with invalid path */
36  "$file_path///realpath_私はガラスを食べられますbasic/home//..//././test//realpath_私はガラスを食べられますbasic.tmp",
37  "$file_path/realpath_私はガラスを食べられますbasic/home/../home/../test/../..realpath_私はガラスを食べられますbasic.tmp"
38);
39
40$counter = 1;
41/* loop through $files to read the filepath of $file in the above array */
42foreach($filenames as $file) {
43  echo "\n-- Iteration $counter --\n";
44  var_dump( realpath($file) );
45  $counter++;
46}
47
48echo "Done\n";
49?>
50--CLEAN--
51<?php
52$name_prefix = __DIR__."/realpath_私はガラスを食べられますbasic";
53unlink("$name_prefix/home/test/realpath_私はガラスを食べられますbasic.tmp");
54unlink("$name_prefix/home/realpath_私はガラスを食べられますbasic.tmp");
55unlink("$name_prefix/realpath_私はガラスを食べられますbasic.tmp");
56rmdir("$name_prefix/home/test/");
57rmdir("$name_prefix/home/");
58rmdir("$name_prefix/");
59?>
60--EXPECTF--
61*** Testing basic functions of realpath() with files ***
62
63*** Testing realpath() on filenames ***
64
65-- Iteration 1 --
66string(%d) "%s\realpath_私はガラスを食べられますbasic\home\realpath_私はガラスを食べられますbasic.tmp"
67
68-- Iteration 2 --
69bool(false)
70
71-- Iteration 3 --
72string(%d) "%s\realpath_私はガラスを食べられますbasic\home\test\realpath_私はガラスを食べられますbasic.tmp"
73
74-- Iteration 4 --
75bool(false)
76
77-- Iteration 5 --
78string(%d) "%s\realpath_私はガラスを食べられますbasic\home\realpath_私はガラスを食べられますbasic.tmp"
79
80-- Iteration 6 --
81bool(false)
82
83-- Iteration 7 --
84bool(false)
85Done
86