2 Test readlink() and realpath() functions: usage variation - linkname/filename stored in object(Bug #42038)
5 if (substr(PHP_OS, 0, 3) == 'WIN') {
6 die('skip no symlinks on Windows');
11 /* Prototype: string readlink ( string $path );
12 Description: Returns the target of a symbolic link
14 Prototype: string realpath ( string $path );
15 Description: Returns canonicalized absolute pathname
18 echo "*** Testing readlink() and realpath() : usage variations ***\n";
19 $name_prefix = dirname(__FILE__);
20 $filename = "$name_prefix/readlink_realpath_variation1/home/tests/link/readlink_realpath_variation1.tmp";
21 mkdir("$name_prefix/readlink_realpath_variation1/home/tests/link/", 0777, true);
23 echo "\n*** Testing readlink() and realpath() with linkname stored inside a object ***\n";
25 $file_handle = fopen($filename, "w");
28 // creating object with members as linkname
31 function object_temp($link) {
32 $this->linkname = $link;
35 $obj1 = new object_temp("$name_prefix/readlink_realpath_variation1/../././readlink_realpath_variation1/home/readlink_realpath_variation1_link.tmp");
36 $obj2 = new object_temp("$name_prefix/readlink_realpath_variation1/home/../..///readlink_realpath_variation1_link.tmp");
38 echo "\n-- Testing readlink() and realpath() with softlink, linkname stored inside an object --\n";
40 var_dump( symlink($filename, $obj1->linkname) );
41 var_dump( readlink($obj1->linkname) );
42 var_dump( realpath($obj1->linkname) );
43 var_dump( symlink($filename, $obj2->linkname) );
44 var_dump( readlink($obj2->linkname) );
45 var_dump( realpath($obj2->linkname) );
48 unlink($obj1->linkname);
49 unlink($obj2->linkname);
51 echo "\n-- Testing readlink() and realpath() with hardlink, linkname stored inside an object --\n";
52 // creating hard links
53 var_dump( link($filename, $obj1->linkname) );
54 var_dump( readlink($obj1->linkname) ); // invalid because readlink doesn't work with hardlink
55 var_dump( realpath($obj1->linkname) );
56 var_dump( link($filename, $obj2->linkname) );
57 var_dump( readlink($obj2->linkname) ); // invalid because readlink doesn't work with hardlink
58 var_dump( realpath($obj2->linkname) );
61 unlink($obj1->linkname);
62 unlink($obj2->linkname);
68 $name_prefix = dirname(__FILE__)."/readlink_realpath_variation1";
69 unlink("$name_prefix/home/tests/link/readlink_realpath_variation1.tmp");
70 rmdir("$name_prefix/home/tests/link/");
71 rmdir("$name_prefix/home/tests/");
72 rmdir("$name_prefix/home/");
73 rmdir("$name_prefix/");
76 *** Testing readlink() and realpath() : usage variations ***
78 *** Testing readlink() and realpath() with linkname stored inside a object ***
80 -- Testing readlink() and realpath() with softlink, linkname stored inside an object --
82 string(%d) "%s/readlink_realpath_variation1/home/tests/link/readlink_realpath_variation1.tmp"
83 string(%d) "%s/readlink_realpath_variation1/home/tests/link/readlink_realpath_variation1.tmp"
85 string(%d) "%s/readlink_realpath_variation1/home/tests/link/readlink_realpath_variation1.tmp"
86 string(%d) "%s/readlink_realpath_variation1/home/tests/link/readlink_realpath_variation1.tmp"
88 -- Testing readlink() and realpath() with hardlink, linkname stored inside an object --
91 Warning: readlink(): Invalid argument in %s on line %d
93 string(%d) "%s/readlink_realpath_variation1/home/readlink_realpath_variation1_link.tmp"
96 Warning: readlink(): Invalid argument in %s on line %d
98 string(%d) "%s/readlink_realpath_variation1_link.tmp"