1--TEST-- 2Test rename() function : variation - various relative, absolute paths 3--CREDITS-- 4Dave Kelsey <d_kelsey@uk.ibm.com> 5--SKIPIF-- 6<?php 7if (substr(PHP_OS, 0, 3) != 'WIN') die('skip.. for Windows'); 8?> 9--FILE-- 10<?php 11/* Prototype : bool rename(string old_name, string new_name[, resource context]) 12 * Description: Rename a file 13 * Source code: ext/standard/file.c 14 * Alias to functions: 15 */ 16 17/* Creating unique files in various dirs by passing relative paths to $dir arg */ 18 19echo "*** Testing rename() with absolute and relative paths ***\n"; 20$mainDir = "renameVar11"; 21$subDir = "renameVar11Sub"; 22$absMainDir = dirname(__FILE__)."/".$mainDir; 23mkdir($absMainDir); 24$absSubDir = $absMainDir."/".$subDir; 25mkdir($absSubDir); 26 27$fromFile = "renameMe.tmp"; 28$toFile = "IwasRenamed.tmp"; 29 30$old_dir_path = getcwd(); 31chdir(dirname(__FILE__)); 32 33$allDirs = array( 34 // absolute paths 35 "$absSubDir/", 36 "$absSubDir/../".$subDir, 37 "$absSubDir//.././".$subDir, 38 "$absSubDir/../../".$mainDir."/./".$subDir, 39 "$absSubDir/..///".$subDir."//..//../".$subDir, 40 "$absSubDir/BADDIR", 41 42 43 // relative paths 44 $mainDir."/".$subDir, 45 $mainDir."//".$subDir, 46 $mainDir."///".$subDir, 47 "./".$mainDir."/../".$mainDir."/".$subDir, 48 "BADDIR", 49); 50 51for($i = 0; $i<count($allDirs); $i++) { 52 $j = $i+1; 53 $dir = $allDirs[$i]; 54 echo "\n-- Iteration $j --\n"; 55 touch($absSubDir."/".$fromFile); 56 $res = rename($dir."/".$fromFile, $dir."/".$toFile); 57 var_dump($res); 58 if ($res == true) { 59 $res = rename($dir."/".$toFile, $dir."/".$fromFile); 60 var_dump($res); 61 } 62 unlink($absSubDir."/".$fromFile); 63} 64 65chdir($old_dir_path); 66rmdir($absSubDir); 67rmdir($absMainDir); 68 69echo "\n*** Done ***\n"; 70?> 71--EXPECTF-- 72*** Testing rename() with absolute and relative paths *** 73 74-- Iteration 1 -- 75bool(true) 76bool(true) 77 78-- Iteration 2 -- 79bool(true) 80bool(true) 81 82-- Iteration 3 -- 83bool(true) 84bool(true) 85 86-- Iteration 4 -- 87bool(true) 88bool(true) 89 90-- Iteration 5 -- 91 92Warning: rename(%s/renameVar11/renameVar11Sub/..///renameVar11Sub//..//../renameVar11Sub/renameMe.tmp,%s/renameVar11/renameVar11Sub/..///renameVar11Sub//..//../renameVar11Sub/IwasRenamed.tmp): The system cannot find the path specified. (code: 3) in %s on line %d 93bool(false) 94 95-- Iteration 6 -- 96 97Warning: rename(%s/renameVar11/renameVar11Sub/BADDIR/renameMe.tmp,%s/renameVar11/renameVar11Sub/BADDIR/IwasRenamed.tmp): The system cannot find the path specified. (code: 3) in %s on line %d 98bool(false) 99 100-- Iteration 7 -- 101bool(true) 102bool(true) 103 104-- Iteration 8 -- 105bool(true) 106bool(true) 107 108-- Iteration 9 -- 109bool(true) 110bool(true) 111 112-- Iteration 10 -- 113bool(true) 114bool(true) 115 116-- Iteration 11 -- 117 118Warning: rename(BADDIR/renameMe.tmp,BADDIR/IwasRenamed.tmp): The system cannot find the path specified. (code: 3) in %s on line %d 119bool(false) 120 121*** Done ***