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